软设之希尔排序

假设有n个元素,先取一个小于n的整数d1作为一个增量,把文件的全部记录分成d1个组。所有距离为d1的倍数的记录放在同一个组中。先在各组中进行直接插入排序;然后,取第二个增量d2<d1重复上诉的分组和排序,直到所取得增量dt=1,也就是所有记录放在一个同一个组进行插入排序。

比如说有数组57 68 59 52 72 28 96 33 24 19进行希尔排序。

d1=10/2=5

第1个第6个为一组,第2个第7个为一组,第3个第8个为一组,第4个第9个为一组,第5个第10个为一组,进行插入排序

排序如下

28 68 33 24 19 57 96 59 52 72

d2=5/2取奇数为3

再次分组,排序如下

24 19 33 28 59 52 72 68 57 96

d3=3/2=1

排序如下

19 24 28 33 52 59 68 72 57 96

最后对整个数组进行插入排序就可以了。这时候整个数组排列相对有序了,只要进行很少插入排序就可以完成排序了。

希尔排序是一种不稳定的排序方法,时间复杂度是O(n^1.3),空间复杂度是O(1)

相关推荐
hongmai66688816 分钟前
聊聊ESP32-C3-WROOM-02-N8这颗8MB Flash的RISC-V模组
笔记·嵌入式硬件·物联网·智能路由器·risc-v
青 春 记 忆4 小时前
LeetCode 21. 合并两个有序链表|Python 解法详解
python·算法·leetcode·链表
尤乐娃子7 小时前
进入大厂(厂子大)实习Day12
前端·笔记·实习
Sagittarius_A*7 小时前
后量子密码|通识认知 03|量子威胁辟谣:Grover 算法对对称密码的影响与误区
算法·信息安全·密码学·量子计算·pqc·后量子密码
砚凝霜8 小时前
软考网络工程师|第 6 章 密码学、哈希、数字签名、数字证书 PKI 完整备考笔记
笔记·密码学·哈希算法
QAQo7T8 小时前
Python组蓝桥杯备赛超详细知识点总结笔记_排序算法篇
笔记·python·算法·蓝桥杯·排序算法
千里之行,始于足下sanhai8 小时前
P8686 [蓝桥杯 2019 省 A] 修改数组 - 数字魔法大冒险 题解
c++·算法·动态规划
lion_heart0019 小时前
成功日记Plus 智能记账:共享账本、预算管控、Excel 导出等一次讲清
笔记
小星星闪亮登场9 小时前
Codeforces Round 1115 ( Div. 2)
数据结构·c++·算法·贪心算法·排序算法·codeforces
计算机小白一个9 小时前
蓝桥杯 Java B 组之哈希表应用(两数之和、重复元素判断)
java·数据结构·算法·蓝桥杯