希尔排序

简介: 希尔排序。

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位。

include

// 函数声明
void shell_sort(int arr[], int len);

int main() {
int arr[] = { 22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70 };
int len = sizeof(arr) / sizeof(arr[0]); // 计算数组长度

shell_sort(arr, len);  // 调用希尔排序函数

// 打印排序后的数组
for (int i = 0; i < len; i++) {
    printf("%d ", arr[i]);
}

return 0;

}

// 希尔排序函数
void shell_sort(int arr[], int len) {
// 计算初始间隔
for (int gap = len / 2; gap > 0; gap /= 2) {
// 对每个间隔进行插入排序
for (int i = gap; i < len; i++) {
int temp = arr[i]; // 当前待插入的元素
int j = i;
// 移动大于temp的元素
while (j >= gap && arr[j - gap] > temp) {
arr[j] = arr[j - gap];
j -= gap;
}
arr[j] = temp; // 插入元素到正确位置
}
}
}

目录
相关文章
希尔排序是什么
希尔排序:外套一层间隔逐步缩小的循环的插入排序
|
6月前
直接插入排序与希尔排序
直接插入排序与希尔排序
42 2
|
6月前
|
搜索推荐 Shell C++
C++希尔排序的实现
C++希尔排序的实现
|
6月前
|
搜索推荐
直接插入排序和希尔排序
直接插入排序和希尔排序
67 0
|
搜索推荐
希尔排序
希尔排序。
37 0
|
算法 搜索推荐 Shell
18 希尔排序
18 希尔排序
30 0
插入排序与希尔排序
插入排序与希尔排序
50 0
|
搜索推荐 测试技术 C++
【插入排序】直接插入排序 与 希尔排序
【插入排序】直接插入排序 与 希尔排序
|
搜索推荐 算法 C#
C#——希尔排序
C#——希尔排序
89 0