void sort(int arr[],int len) { int tmp = -1; for(int i = 1 ; i<len; i++) { printf("第%d轮:\n", i); // len-i+1:新轮比上轮可以少一次比较,-i // i从1开始,第一轮不能少,故+1以修正 for(int j = 1; j < len-i+1; j++) { if (arr[j-1] > arr[j]) { tmp = arr[j-1]; arr[j-1] = arr[j]; arr[j] = tmp; } printArr(arr, len); } } } void printArr(int arr[],int len ) { for(int i = 0 ; i<len; i++) { printf("%d ", arr[i]); } printf("\n"); }
main中调用
int a[] = {5,4,3,2,1}; sort(a, 5);
输出结果:
第1轮: 4 5 3 2 1 4 3 5 2 1 4 3 2 5 1 4 3 2 1 5 第2轮: 3 4 2 1 5 3 2 4 1 5 3 2 1 4 5 第3轮: 2 3 1 4 5 2 1 3 4 5 第4轮: 1 2 3 4 5
时间: 2024-10-16 15:27:46