插入排序
void insert_sort(int n) {
for (int i = 1; i < n; i++) {
for (int j = i; j > 0; j--) {
if (a[j] < a[j - 1]) swap(a[j], a[j - 1]);
}
}
}
希尔排序
incre代表增量,一直到增量为1,会回归到插入排序,但此时进行的交换次数会少得多,因为每一次对一个大的增量进行希尔排序都会使这个序列变得更有序
void shell_sort(int incre, int n) {
for (int i = 0; i < incre; i++) { //序列头元素
for (int j = i; j < n; j += incre) {
for (int k = j + incre; k > i && k < n; k -= incre) {
if (a[k - incre] > a[k]) {
swap(a[k - incre], a[k]);
}
}
}
}
}