当前位置:网站首页>希尔排序(最小增量排序)
希尔排序(最小增量排序)
2022-07-22 10:35:00 【安若兮~】
是对直接插入排序的一种优化
最小增量数组 由大到小,且为素数,最后一个增量必须为1;
原始数据: 1,56,6,33,7,12,45,32,14,42
按增量5组进行排序 1,56,6,33,7,12,45,32,14,42
即(1,12),(56,45),(6,32),(33,14),(7,42)
排序(1,12),(45,56),(6,32),(14,33),(7,42)
得到1,45,6,14,7,12,56,32,33,42
按增量2组进行排序1,45,6,14,7,12,56,32,33,42
即(1,6,7,56,33),(45,14,12,32,42)
排序 (1,6,7,33,56),(12,14,32,42,45)
得到1,12,6,14,7,32,33,42,56,45
按增量1组进行排序1,12,6,14,7,32,33,42,56,45
得到 1,6,7,12,14,32,33,42,45,56
那么有人会问了,这看上去更复杂了呀,怎么说是直接插入排序的优化了呢?
这就和直接插入排序的特点有关了,数据趋近于有序,则排序最快
那么开始写代码扒
void Shell(int *arr,int len,int gap) {
for (int i = gap; i < len; i++) {
int temp = arr[i];
int j;
for (j = i-gap; j>=0;j=j-gap) {
if (arr[j] > temp) {
arr[j+gap] = arr[j];
}
else {
break;
}
}
arr[j + gap] = temp;
}
}
void Shell_Sort(int *arr,int len) {
int gap[] = {5,3,1};
for (int i = 0; i < sizeof(gap) / sizeof(gap[0]);i++) {
Shell(arr,len,gap[i]);
}
}
void print(int *arr,int len) {
for (int i = 0; i < len - 1;i++) {
cout << " " << arr[i] << " ";
}
}
int main() {
int arr[] = {1,8,5,4,6,2,7};
int len = sizeof(arr) / sizeof(arr[0]);
Shell_Sort(arr,len);
print(arr,len);
return 0;
}
边栏推荐
- 她力量系列二丨UCLA李婧翌:女性最不需要做的就是「怀疑自己」
- vim配置
- Rag summary
- Kubernetes基础
- 基于canny的亚像素的Devernay Algorithm
- 通过@Autowired注入的bean,即使这个类上没有标注@Comment等这一类的注解,但是这个bean依然能够注入进来
- Cmake+opencv+mingw
- Deep understanding of MMAP function
- Reinforcement learning weekly 39: approximate optimal depth, multi-agent generalization, character animation reinforcement learning
- IDEA背景图片集
猜你喜欢
Reinforcement learning weekly 39: approximate optimal depth, multi-agent generalization, character animation reinforcement learning
LeetCode21——Merge two sorted lists——Iteration or recursion
LeetCode32——next permutation
docker安装3主3从redis集群
MySQL index
Kubernets原理分解
LeetCode912——sort an array—— quick sort algorithm
机器学习入门:逻辑回归-2
LeetCode160 & LeetCode141——double pointers to solve the linked list
进程fork
随机推荐
Pytorch实现网络部分层的固定不进行回传更新
16进制字符串与字节数组之间的转换
Chinese search for introduction to elastic search (8)
Kubernets原理分解
The database is encapsulated by queryrunner simulation
Getting started with elastic search: installation and configuration of elastic search (I)
mysql重要配置参数整理
LeetCode160 & LeetCode141——double pointers to solve the linked list
Latex在VSCODE中编译报错`Recipe terminated with error. Retry building the project.
她力量系列六丨杨笛一:女孩长大后数理化可以很好,科研可以很鲜活
flask 跨域
没有人知道TikTok的最新流行产品Pink Sauce中含有什么成分
配置属于自己的Vim-编辑器之神
YOLO v1、v2、v3
vimplus修改终端字体为Droid Sans Mono Nerd Font
Signal noise reduction method
LeetCode912——sort an array—— quick sort algorithm
模拟QQ登陆界面
Usage and precautions of accumulator used in spark
Leetcode0022 - bracket generation - DFS