输入10个数,用“冒泡法”对10个数排序(由小到大)。冒泡法应该怎么做呀,不是很会。
通过相邻两个数之间的比较和交换,使(数值)较小的数逐渐从底部移向顶部,较大的数逐渐从顶部移向底部。这是网上查的,希望有人可以answer一下
冒泡排序思路是,不知道有什么说清楚:
1、用两个循环来控制冒泡排序,第一个循环控制比较到第几个位置的数的递减量
第二个循环利用第一个循环的i经过计算控制比较到第几个位置的数
2、经过第1个和第2个循环的控制,里面的if来比较前一个和后一个数的大小,然后交换他们的值
参考资料:C 冒泡排序_ROOOOOOM的博客-CSDN博客_c冒泡排序
代码如下:
#include <stdio.h>
//参考资料:
//https://blog.csdn.net/qq_41228218/article/details/99060457
int main(void)
{
int num[10];
int i;
printf("请输入10个整数:\n");
for(i=0;i<10;i++){
scanf("%d",&num[i]);
}
//冒泡排序
int j;
int temp;
//i最多取8,即数组倒数第二个数,
//因为第一轮比较时j可以到8,即数组最后一个数,j+1 可以比较到数组最后一个数 ,即达到将最大的数放到数组最后的目的
//然后里层循环最后一个数的位置都往前移动一个位置,因为经过上一轮比较后,上一个位置已经放置了较大的数
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(num[j]>num[j+1]){
temp=num[j];
num[j]=num[j+1];
num[j+1]=temp;
}
}
}
//打印结果
for(i=0;i<10;i++){
printf("%d ",num[i]);
}
return 0;
}