标题:关于C语言冒泡排序(指针法)
只看楼主
莹幸儿
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2018-3-23
结帖率:22.22%
已结贴  问题点数:15 回复次数:7 
关于C语言冒泡排序(指针法)
#include"stdio.h"
int main()
{
    int alg(int a[],int n);
    void swag(int a[],int m);
    int a[8]={1,5,6,2,8,4,9,3};
    alg(a,8);
    return 0;
}
int alg(int a[],int n)
{
    void swag(int a[],int n);
    int i;
    for(i=0;i<8;i++)
    {
    swag(a,8-i);
    printf("第%d次遍排序:\n",i+1);
    for(i=0;i<8;i++)
    printf("%4d\n",a[i]);
    }
}
void swag(int a[],int m)
{
    int j;
    int *p=a,*q,tepm;
    for(j=0;j<m;j++)
    {   
     q=p+1;
    if(*p<*q)
     {
      tepm=*p;*p=*q;*q=tepm;
      p++;
     }
    }
}
我调不通,
目的是利用指针作为参数来进行自定义函数的方法进行冒泡排序,并且显示每次冒泡的数据,第一次:,,,
第二次:。,,,,
…………
求解答
搜索更多相关主题的帖子: C语言 冒泡排序 指针 int void 
2018-05-30 22:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
#include <stdio.h>

void alg( int a[], size_t n );
void swag( int a[], size_t n );

int main( void )
{
    int a[]={ 1,5,6,2,8,4,9,3 };
    alg( a, sizeof(a)/sizeof(*a) );
}

void alg( int a[], size_t n )
{
    for( size_t i=1; i<n; ++i )
    {
        swag( a, n-i );

        printf( "第%d次遍排序:", i );
        for( size_t j=0; j!=n; ++j )
            printf( " %4d", a[j] );
        putchar( '\n' );
    }
}

void swag( int a[], size_t n )
{
    for( size_t i=0; i!=n; ++i )
    {
        if( a[i] < a[i+1] )
        {
            int temp = a[i];
            a[i] = a[i+1];
            a[i+1] = temp;
        }
    }
}
2018-05-31 12:29
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:5 
回复 2楼 rjsp
你 的做法不合题意,楼主要的是指针的方法,你这不是,如果不用指针,我这早就有了,因为我前几天就做过这题目,请看:
程序代码:
#include <stdio.h>
void sort(int *a,int len)

 {
   int i,j,t,z,count=0;
   for(i=0;i<len-1;i++)
     {
       for(j=0;j<len-i-1;j++)
          {
           if(a[j]>a[j+1])
              {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
             printf( "第%d次遍排序:",++count);
              for(z=0;z<8;z++)
              printf("%4d ",a[z]);
              printf("\n");
              }
             
          }
     }
      
      printf("\n");
  }
int main(int argc, char *argv[])
{
   int a[8]={ 1,5,6,2,8,4,9,3};
   int i=0;
   
   for(i=0;i<8;i++)
              printf(" %4d",a[i]);
   printf("\n");
   sort(a,8);
  return 0;
}
2018-05-31 12:49
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:0 
2018-05-31 13:27
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:5 
以下是引用自学的数学在2018-5-31 12:49:27的发言:

你 的做法不合题意,楼主要的是指针的方法,你这不是,如果不用指针,我这早就有了,因为我前几天就做过这题目,请看:
#include <stdio.h>
void sort(int *a,int len)

你都 int *a 了 还是你没用指针?
sort函数里面 所有对a的操作 全部都是指针操作

https://zh.
2018-05-31 15:03
莹幸儿
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2018-3-23
得分:0 
回复 2楼 rjsp
显示结果对的,过程我看看
2018-05-31 22:42
莹幸儿
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2018-3-23
得分:0 
回复 3楼 自学的数学
好久没有用冒泡算法有点忘记了,不过你这个应该对的
2018-05-31 22:48
莹幸儿
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2018-3-23
得分:0 
回复 4楼 自学的数学
看了你的参考那第一遍不应该是1,5,2,6,4,8,3,9么
2018-05-31 22:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487462-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.185357 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved