//3.直接插入排序
void InsertSort(int* a, int n, int step = 1)
{
for (int i = step; i < n; ++i) {
int j = i - step;
if (a[i] < a[j]) { // 比较前后数字大小
int tmp = a[i]; // 作为临时存储
//a[i] = a[j];
while (a[j] > tmp) { // 寻找tmp的插入位置
a[j + step] = a[j];
j -= step;
}
a[j + step] = tmp; // 插入tmp
}
}
}
//4.希尔排序
void ShellSort(int* a, int n)
{
int dk = n / 2; // 设置初始dk
while (dk >= 1) {
InsertSort(a, n, dk);
dk /= 2;
}
}
希尔排序
最新推荐文章于 2023-09-23 16:26:22 发布