C笔记 - 算法:希尔排序
希尔排序
1 - 1959 年 Shell 发明的第一个突破 O(n2) 的排序算法,是简单插入排序的改进版。它与插入排序的不同之处在于它会优先比较距离较远的元素
2 - 希尔排序又叫缩小增量排序,它通过比较相距一定间隔的元素来进行,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止
① 第一趟,gap = length/2 = 4
② 第二趟,增量缩小为 2
③ 第三趟,增量缩小为 1,得到最终排序结果
3 - 代码示例
1 // 数组 2 int array[] = {12,91,21,10,13}; 3 int length = sizeof(array)/sizeof(array[0]);// 5 个元素 4 5 6 // 最外层控制增量,循环缩小 7 for (int gap = length/2; gap > 0; gap = gap/2) { 8 9 // 中间控制需要遍历的趟数:趟数 + gap = length 10 // 如 gap = 1,需遍历 4 趟; gap = 2;需要遍历 3 趟....... 11 for (int i = gap; i < length; i++) { 12 13 14 printf("----- gap = %d 第 %d 趟 ------\n\n",gap,i-gap +1); 15 int j = i; 16 int current = array[i]; 17 18 while (j - gap >= 0 && current < array[j - gap]) { 19 array[j] = array[j - gap]; 20 j = j - gap; 21 } 22 array[j] = current; 23 24 int n = 0; 25 while (n < length) { 26 printf("%d\t",array[n]); 27 n++; 28 } 29 printf("\n\n"); 30 } 31 32 }
日志打印
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-04-13 UI基础 - UIBezierPath:FillMode
2018-04-13 UI基础 - UIBezierPath:反转路径 | 虚线
2018-04-13 UI基础 - UIBezierPath 常用API