30排序算法之希尔排序
2023-09-11 14:21:07 时间
排序算法之希尔排序
基本原理:
Donald.L.Shell设计的排序算法。
特点:
(1)缩小增量
(2)多遍插入排序
例如,选用增量序列(9,5,3,1)
4个增量,进行4遍插入排序 。
术语:
h-排序(h-sorted)
h-子序列(h-subsequence)
h-有序的(h-ordered)
希尔排序算法
void Shell_sort(int a[ ],int d[ ],int n,int t)
{ int i,j,h,k,x;
1. for(h=0;h<t;h++)
2. { k=d[h]; //当前增量为k
3. for(i=k;i<n;i++)
4. { for(x=a[i],j=i-k;j>=0&&x<a[j];)
5. { a[j+k]=a[j]; j-=k; }
6. a[j+k]=x; //x就位
}
}
}
示例
希尔排序源代码: //希尔排序 void ShellSort(int arr[],int n) { int i,j,temp; int d = n; do { d = d/3 + 1; for(i=d;i<n;i++) { if(arr[i] < arr[i-d]) { temp = arr[i]; for(j=i-d;j>=0&&arr[j]>temp;j-=d) { arr[j+d] = arr[j]; } arr[j+d] = temp; } } }while(d>1); } int main() { int arr[10]={3,5,8,2,4,13,9,1,16,7}; ShellSort(arr,10); for(int i=0;i<10;++i) printf("%d ",arr[i]); getchar(); return 0; }
相关文章
- 泛函编程(7)-数据结构-List-折叠算法
- Gnome排序算法
- Java实现 蓝桥杯 算法训练 Cowboys
- Java实现 蓝桥杯VIP 算法提高 递归倒置字符数组
- Java实现 蓝桥杯VIP 算法提高 复数求和
- Java实现 蓝桥杯VIP 算法提高 超级玛丽
- 排序算法之希尔排序
- 排序算法之直接插入排序
- (算法)从0到n整数中数字2出现的次数
- 数据结构和算法14 之归并排序
- 重新整理数据结构与算法(c#)—— 二叉树排序树补删除节点[二十二]
- 基于OpenCV+CUDA实时视频抠绿、背景合成以及抠绿算法小结
- 排序算法大数据量测试代码
- Atitit snownlp nlp 常见功能 目录 1.1. 主要功能:1 1.2. 官网信息:2 1.3. # 自动摘要 vs 关键词提取2 1.4. Tf idf算法2 1.5. p
- Atitit 算法原理与导论 目录 1. Attilax总结的有用算法 按用途分类1 1.1. 排序算法 字符串匹配(String Matching)1 1.2. 加密算法 编码算法 序列
- CV之ICG:计算机视觉之图像标题生成(Image Caption Generator)算法的简介、使用方法、案例应用之详细攻略
- 基于企鹅优化算法的机器人轨迹规划(Matlab代码实现)
- 常见排序算法效率比较
- 智能优化算法:狮群优化算法 - 附代码
- 智能优化算法:被囊群算法-附代码
- 快速排序算法
- C语言十大排序算法源码
- c++实现快速排序算法
- Python编程:排序算法之归并排序
- VC++调用STL算法函数有效提升STL列表的搜索速度(附源码)
- 【algorithm】算法基础课---排序算法(附笔记 | 建议收藏)
- Python 排序与查找算法收集
- 数据结构与算法之桶排序
- 七大排序算法的多语言代码实现
- 使用OpenCV-Python+Flask+json完美实现网页与本地互相协同数据流传输: NLP模型聊天文本request传输+图像算法结果传输的解决方案