希尔排序

简介: 希尔排序。

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

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

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

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; // 插入元素到正确位置
}
}
}

目录
相关文章
|
8月前
|
算法 数据安全/隐私保护
基于MPC在线优化的有效集法位置控制器simulink建模与仿真
本课题研究模型预测控制(MPC),一种基于模型的优化控制方法,可处理系统动态特性、输入输出约束及不确定性。通过Simulink实现MPC在线优化的有效集法位置控制器建模与仿真,并与RCNC控制器对比。有效集法适用于带约束的优化问题,通过逐步更新活动集找到最优解。系统基于MATLAB 2022a开发,核心程序包含初始化、搜索方向确定、步长计算、活动集更新及终止准则等关键步骤。
|
8月前
|
人工智能 Cloud Native 安全
《2025年度企业用云十大趋势》发布,AI云全面支撑大模型落地
《2025年度企业用云十大趋势》发布,AI云全面支撑大模型落地
|
9月前
|
人工智能 程序员 测试技术
全网招募 100 位 AI 程序员体验官,感受 DeepSeek 加持下智能编码
通义灵码联合阿里云开发者社区,全网寻找 100 位 AI 程序员体验官,感受 AI 程序员和满血版 Deepseek 加持下的智能编码新功能,体验需求开发、跨语言编程、单元测试自动生成、图生代码等 AI 程序员能力,领取 Cherry 机械键盘、智能手环等奖品。
|
缓存 Java
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
Java本地高性能缓存实践问题之使用Caffeine的Cache接口来查找一个缓存元素的问题如何解决
257 0
|
Java 测试技术 程序员
内存泄漏:深入探讨、识别与防范
内存泄漏:深入探讨、识别与防范
|
前端开发 JavaScript Java
SpringCloudGateway网关服务实现文件上传功能
SpringCloudGateway网关服务实现文件上传功能
261 1
|
JavaScript Java jenkins
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
如何利用CentOS7+docker+jenkins+gitee部署springboot+vue前后端项目(保姆教程)
607 0
|
编译器 数据安全/隐私保护 C语言
C++ 之命名空间namespace【详解】
C++ 之命名空间namespace【详解】
326 4
|
算法 C语言
直接插入排序--C语言(附详细代码)(附图详解)
直接插入排序--C语言(附详细代码)(附图详解)
874 0