十个数据 由大到小 冒泡排序参考代码:
#include<stdio.h>
#define N 10
int main()
{
int i,j,temp;
int a[N] = {0};
printf("please input 10 number:");
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
printf("\n");
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
for(i=0;i<N-1;i++)
{
for(j=0;j<N-1-i;j++)
{
if(a[j] < a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(i=0;i<N;i++)
{
printf("%3d",a[i]);
}
printf("\n");
return 0;
}
冒泡三部曲(开始已定义 N= 10)
第一步:数据交换
串水原理,两杯水换位置需要三个杯 ,数据也是如此,需要定义一个临时变量,如
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
temp就是临时变量。
第二部 :数据大小打擂台 本代码案例,比小,谁小谁与下位比较。最后把最小的放在最后一位,如代码:
for(j=0;j<N-1-i;j++)
{
if(a[j] < a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
第三部:待第二部选出最小得存在末尾位之后剔除末尾位,比较其余9位,重复步骤二,再选出最小的存在倒数第二位,以此类推从大到小排序基本完成。
从小到大原理相同只不过在第二部是选出最大的 与下一位比较。(把 if(a[j] < a[j+1]) 改成 if(a[j] > a[j+1])即可)