1.直接插入排序Insert sort
2.折半插入排序Binary insert sort
3.希尔排序Bell sort
4.快速排序Quick sort
5.直接选择排序Select sort
#include#include using namespace std; int a[100], l = 0, r = -1; void mpsort(int* s, int left, int right) {//冒泡排序 for (int i = left+1; i < right; i++) {//选出最小的排在第i-1个 for (int j = right - 1; j >= i; j--) { if (s[j] < s[j - 1])swap(s[j], s[j - 1]); } } } void Insertsort1(int* s, int left, int right) {//直接插入排序1 for (int i = left + 1; i <= right; i++) { if (s[i] < s[i - 1]) { int t = s[i], j = i - 1; do { s[j + 1] = s[j], j--; } while (j >= left && s[j] > t); s[j + 1] = t; } } } void Insertsort2(int* s, int left, int right) {//直接插入排序2 for (int i = left + 1; i <= right; i++) { if (s[i] < s[i - 1]) { int t = s[i], j = i - 1; for (j; j >= left && s[j] > t; j--) { s[j + 1] = s[j]; }s[j + 1] = t; } } } void Binaryinsertsort(int* s, int left, int right) {//折半插入排序 for (int i = left + 1; i <= right; i++) { int t = s[i], low = left, high = i - 1; while (low <= high) { int middle = (low + high) / 2; if (t < s[middle])high = middle - 1; else low = middle + 1; }for (int j = i - 1; j >= low; j--) { s[j + 1] = s[j]; }s[low] = t; } } void Shellsort(int* s, int left, int right) {//希尔排序 int gap = right - left + 1; while (gap > 1) { gap = gap / 3 + 1; for (int i = left + gap; i <= right; i++) { if (s[i] < s[i - gap]) { int t = s[i], j = i - gap; for (j; j >= left&&s[j]>t; j-=gap) { s[j + gap] = s[j]; }s[j + gap] = t; } } } } int Partition(const int low, const int high) { int pivot = a[low], pivotpos = low; for (int i = low + 1; i <= high; i++) { if (a[i] < pivot) { pivotpos++; if(i!=pivotpos)swap(a[pivotpos], a[i]); } }a[low] = a[pivotpos], a[pivotpos] = pivot; return pivotpos; }void Quicksort(int* s, int left, int right) {//快速排序 if (left < right) { int pivotpos = Partition(left, right); Quicksort(s, left, pivotpos - 1); Quicksort(s, pivotpos + 1, right); } } void Selectsort(int* s, int left, int right) {//选择排序 for (int i = left; i < right; i++) { int ani = i; for (int j = i + 1; j <= right; j++) { if (a[j] < a[ani])ani = j; }if (ani != i)swap(a[ani], a[i]); } } int main() { int n; scanf_s("%d", &n); while (r < n-1) { scanf_s("%d", &a[++r]); } mpsort(a, l, r); //Insertsort1(a, l, r); //Insertsort2(a, l, r); //Binaryinsertsort(a, l, r); //Shellsort(a, l, r); //Quicksort(a, l, r); //Selectsort(a, l, r); for (int i = 0; i < n; i++)printf("%d ", a[i]); return 0; }



