冒泡排序
将相邻的两个元素进行比较,如果第一个元素大于第二个元素就交换,就这样不停的比较,一轮结束后,最大的数会在最后,然后再进行第二轮,第二大的数就会出现在倒数第二个…
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| int main() { int arr[] = { 10,9,8,7,6,5,4,3,2,1 }; int i, j; int sz = sizeof(arr) / sizeof(arr[0]); for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i - 1; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } printf("第%d轮:", i + 1); printArr(arr, sz); }
return 0; }
输出: 第1轮:9 8 7 6 5 4 3 2 1 10 第2轮:8 7 6 5 4 3 2 1 9 10 第3轮:7 6 5 4 3 2 1 8 9 10 第4轮:6 5 4 3 2 1 7 8 9 10 第5轮:5 4 3 2 1 6 7 8 9 10 第6轮:4 3 2 1 5 6 7 8 9 10 第7轮:3 2 1 4 5 6 7 8 9 10 第8轮:2 1 3 4 5 6 7 8 9 10 第9轮:1 2 3 4 5 6 7 8 9 10
|
写成函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| int bubbleSort(int arr[], int sz) { int i, j; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i - 1; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } }
return 0; }
|