void fun(int a[], int n) {
int i, j, k, temp;
// 冒泡排序: 从大到小
for (i = n - 1; i > 0; i = k){
// 每次预置k=0,循环扫描后更新k
for (j = 0, k = 0; j < i; j++){
if (a[j] < a[j+1]){ // 大的放前面
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
k = j; // 保存最后下沉的位置。这样k后面的都是排序排好了的
}
}
}
}已经测试通过了排序前的数据:11 32 -5 2 14
排序后的顺序:32 14 11 2 -5
#include
#define N 20
void fun(int a[],int n)
{
int i,j,t;
for(i=0;i
}
void main()
{
int a[N]={11,32,-5,2,14},i,m=5;
printf("排序前的数据:");
for(i=0;i
printf("\n");
fun(a,m);
printf("排序后的顺序:");
for(i=0;i
printf("\n");
}
int i,j,t;for(i=n-1;i>=1;i--) for(j=0;j<=i-1;j++) if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; }