冒泡算法是一个很基础且很常见的算法,所以一定要掌握并学会运用,下面是一道有关冒泡的题。
题目
由键盘输入十二个数字,用冒泡法进行降序排序(由大到小排序)。
解析
主要运用嵌套for循环来实现换位,可根据题目要求更改由大到小还是由小到大。
答案
int main(void){
int arr[12];
int i,j,temp;
printf("请输入12个数:\n");
for(i = 0;i < 12; i++){
printf("arr[%d]= ",i);//为了输出数组的数字
scanf("%d",&arr[i]);
}
for(i = 0;i < 11; i++){ //为了防止超限,因为后面有一个j+1
for(j = 0;j < 11 - i; j++){
if(arr[j] < arr[j + 1]){
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
printf("排序结果为:");
for(i = 0;i < 12; i++){
printf("%d\t",arr[i]);//输出结果
}
return 0;
}
注意:
下面两个for循环中的i和j都是比数组的大小小一,这一点容易弄混,其实有两个原因
1.为了防止超限,因为如果跟数组大小一样大的话,j+1就会超出限度
2.实际运算中刚好比数组大小小一能覆盖到所有数字,同时也减小了运算量
3.实在不理解就记着就行,因为我也不是特别理解