冒泡排序的基本原理
数组
第一个和下一个比较,如果比下一个大,则和下一个交换位置。
然后该数又和再下一个比较,以此类推。
当第一个数放好位置后,第二个数来重复上面的过程
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
| #include <stdio.h>
int main() { int arr[] = { 4,5,2,3,6,9,8,7,1, }; for(int i = sizeof(arr) / sizeof(arr[0]);i>0;i--){
for (int j = 0; j < i - 1; j++) { if (arr[j]>arr[j+1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } for (int i = 0; i < sizeof(arr)/sizeof(arr[0]); i++) { printf("%d ", arr[i]); } return 0; }
|
用sizeof()/sizeof(arr[0])来计算数据的个数
这里可以把交换数组的函数封装成一个函数,方便以后的调用
1 2 3 4 5 6 7
| void exchange(int a[], int i, int j)
{ int temp = a[i]; a[i] = a[j]; a[j] = temp; }
|
也可以把打印的封装成一个函数
1 2 3 4
| void print(int a[], int sz) { for (int i = 0; i < sz; i++) printf("%d", a[i]); }
|
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
| #include <stdio.h>
void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } }
int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]); bubbleSort(arr, n); printf("排序后的数组:"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
|