#define true 1
#define false 0
main(){
int n=10,i,j;
int numbers[10];
int change,temp;
/*生成一个数组*/
for (i=0;i<n;i++){
numbers[i]=(int)rand()%100;
printf("%3d",numbers[i]);
if (i==n-1) printf("/n");
}
/*开始冒泡排序,结束的标志是一趟走下来没有发生交换记录*/
for (i=1;i<n&&change;i++){
change=false;
for (j=0;j<n-i;j++)
{
if (numbers[j]>numbers[j+1]){temp=numbers[j];numbers[j]=numbers[j+1];numbers[j+1]=temp;change=true;}
}
printf("%d/n",i);/*没一趟打印一个,实际上完全没必要走n-1趟!通过change变量控制*/
}
/*输出排序后的数组*/
for (i=0;i<n;i++){
printf("%3d",numbers[i]);
}
getchar();
}
C 语言经典题目系列解决方案(7)-冒泡排序
最新推荐文章于 2021-08-19 20:37:49 发布