1.直接插入排序Insert sort
2.折半插入排序Binary insert sort
3.希尔排序Bell sort
4.快速排序Quick sort
5.直接选择排序Select sort
#include<iostream>
#include<algorithm>
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;
}