1.冒泡排序
2.选择排序
3.插入排序
4.希尔排序
5.快速排序
代码如下:分别对应sort 1~5
#include#include #define max 20 using namespace std; void swap(int& a, int& b) { int temp = a; a = b; b = temp; } void sort1(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = i + 1; j < n; j++) if (arr[i] > arr[j]) swap(arr[i], arr[j]); } void sort2(int arr[], int n)//冒泡排序 { int flag = 0; for (int i = 0; i < n - 1 && flag == 0; i++) { flag = 1; for (int j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) { swap(arr[j + 1], arr[j]); flag =0; } } } void sort3(int arr[], int n)//选择排序 { for (int i = 0; i < n; i++) { int min = i; for (int j = i + 1; j < n; j++) { if (arr[j] < arr[min]) min = j; } if (arr[min] < arr[i]) swap(arr[i], arr[min]); } } void sort4(int arr[], int n)//插入排序 { int j; for (int i = 1; i < n; i++) { if (arr[i] < arr[i - 1]) { int temp = arr[i]; for (j = i - 1; j >= 0 && arr[j] > temp; j--) { arr[j + 1] = arr[j]; } arr[j + 1] = temp; } } } void sort5(int arr[], int n)//希尔排序 { int increase = n; do { increase = increase / 3 + 1; for (int i = 0; i < increase; i++) { for (int j = i + increase; j < n; j += increase) { if (arr[j] < arr[j - increase]) { int k; int temp = arr[j]; for (k = j - increase; k >= 0 && temp < arr[k]; k -= increase) { arr[k + increase] = arr[k]; } arr[k + increase] = temp; } } } } while (increase > 1); } int selectsort(int arr[], int begin, int end) { int i = begin, j = end; int temp = arr[begin]; while (i < j) { while (i temp) j--; if (i < j) arr[i++] = arr[j]; while (i < j && arr[i] < temp) i++; if (i < j) arr[j--] = arr[i]; } arr[i] = temp; return i; } void sort6(int arr[], int begin,int end)//快速排序 { if (begin < end) { int tem = selectsort(arr, begin, end); if(tem>begin) sort6(arr, begin, tem - 1); if(tem



