#include <stdio.h>
void swap2(int *,int *);
void bubble(int a[],int n);
int main(void)
{
int n,a[8];
int i;
printf("enter n:");
scanf("%d",&n);
printf("a[%d]:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
bubble(a,n);
printf("after sorted,a[%d]=",n);
for(i=0;i<n;i++)
printf("%3d",a[i]);
return 0;
}
void bubble(int a[],int n)
{
int i,j,t;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1]){
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
这个程序的第二行void swap2(int *,int *);是什么意思,为什么我感觉后面都没用到
swap()
函数的意思是交换两个数,一般定义如下
void swap(int* a, int *b)
{
int t = *a;
*a = *b;
*b = t;
}
这样你就可以把下面代码
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
替换为
swap(&a[j], &a[j+1]);
的确没用到,删了吧
冒泡排序中交换函数的函数声明。首先void 是个空类型,不需要传会参数或者在函数内就能输出结果就用void类型。swap2为函数名。int* 为函数的两个参数为指针类型,相当于数组类型,这里swap函数是多余的,原本应该是bubble函数 if 语句里面那部分,原理是一样的,可自行替换if语句部分,你删了一样运行,这里swap写出来根本没用,望采纳捏