1.冒泡排序
- #include<stdio.h>
- #include<stdbool.h>
- void swap(int* a, int* b)//交换函数
- {
- int temp;
- temp =*a;
- *a = *b;
- *b = temp;
- }
- void bubble_sort(int arr[],int n)
- {
- for (int i = 0; i < n - 1; i++)//冒泡排序至多进行n-1趟
- {
- bool flag = false;
- for (int j = n - 1; j > i; j--)//一趟中,两两进行对比
- {
- if (arr[j - 1] > arr[j])
- {
- swap(&arr[j - 1], &arr[j]);//交换
- flag = true;
- }
- }
- if (flag == false)
- return;//本趟遍历后没变换,说明已经有序
- }
- }
- void print(int arr[], int n)
- {
- int i = 0;
- for (i = 0; i < n; i++)
- {
- printf("%d ", arr[i]);
- }
- printf("\n");
-
- }
- int main()
- {
- int arr[10] = { 5,7,4,2,1,0,3,6,9,8 };
- int n = sizeof(arr) / sizeof(arr[0]);
- print(arr, n);
- bubble_sort(arr, n);
- print(arr, n);
-
- return 0;
- }
2.快速排序
- #include<stdio.h>
- int partition(int arr[], int low, int high)
- {
- int pivot = arr[low];//定义枢值
- while (low < high)
- {
- if (low < high && arr[high] >= pivot)
- high--;
- arr[low] = arr[high];
- if (low < high && arr[low] < pivot)
- low++;
- arr[high] = arr[low];
- }
- arr[low] = pivot;
- return low;
- }
- void quick_sort(int arr[], int low, int high)
- {
- if(low<high)
- {
- int pivotpos=partition(arr, low, high);//划分
- quick_sort(arr, low, pivotpos - 1);//划分左部分
- quick_sort(arr, pivotpos + 1, high);//划分有部分
- }
- }
- void print(int arr[], int n)
- {
- int i = 0;
- for (i = 0; i <n; i++)
- {
- printf("%d ", arr[i]);
- }
- printf("\n");
-
- }
- int main()
- {
- int arr[10] = { 5,7,4,2,1,0,3,6,9,8 };
- int n = sizeof(arr) / sizeof(arr[0]);
- print(arr, n);
- quick_sort(arr,0, n-1);
- print(arr, n);
-
- return 0;
- }