#include<stdio.h> int main() { /*冒泡排序:从大到小*/ /*i=0 第1轮(i+1):需要比较9次(sizeArr-i-1)*/ /*i=1 第2轮(i+1):需要比较8次(sizeArr-i-1)*/ /*i=2 第3轮(i+1):需要比较7次(sizeArr-i-1)*/ /*共比较9轮(sizeArr-1)*/ int arr[10]={20,10,7,15,58,2,45,122,4,52}; int sizeArr=sizeof(arr)/sizeof(arr[0]);//10 printf("交换前:\n"); for(int i=0;i<sizeArr;i++) { printf("%d\n",arr[i]); } //第i+1轮 for(int i=0;i<sizeArr-1;i++) { //第i+1轮需要比较的次数=sizeArr-i-1 for(int j=0;j<sizeArr-i-1;j++) { //交换位置 if(arr[j]<arr[j+1]) { int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } } printf("交换后:\n"); for(int i=0;i<sizeArr;i++) { printf("%d\n",arr[i]); } return 0; }
输出结果:
交换前:
20
10
7
15
58
2
45
122
4
52
交换后:
122
58
52
45
20
15
10
7
4
2