插入排序之shell排序分析及源码演示
来源:互联网 发布:红颜知已歌曲 编辑:程序博客网 时间:2024/05/17 21:45
名字来源
shell排序属于插入排序,因DL.Shell于1959年提出而得名。
缩小增量排序
shell排序利用了直接插入排序在原序列比较有序的情况下,排序速度较快的原理。通过多次排序,每次缩小增量,序列一次比一次有序,当增量为1时,序列已经有序。
源码
template <class T>//shell_sortint sort(T *t, int n){ int d = n / 2; int comp_times = 0; while(d >= 1) { for(int i=0; i<d; i+=1) { for(int k=i+d; k<n; k+=d) { T current = t[k]; int m=k-d; for(; m>=i; m-=d) { comp_times++; if(t[m] > current) { t[m+d] = t[m]; } else { break; } } t[m+d] = current; } } d /= 2; } return comp_times;}
执行结果:
时间复杂度
与增量大小有关:
平均为??(不确定)
空间复杂度
稳定性
不稳定
0 0
- 插入排序之shell排序分析及源码演示
- 插入排序:2路插入排序原理分析及源码演示
- 插入排序之----shell排序
- 插入排序之shell排序
- 八大排序 -- 插入排序 之 【shell排序】
- 插入排序之直接插入排序和Shell排序
- 插入排序之希尔(shell)排序
- 插入排序,选择排序,归并排序等等源码及简要分析
- java插入排序演示
- 插入排序-【Shell排序】
- 插入排序-Shell排序
- 插入排序分析及优化
- 插入排序及算法分析
- 内部排序系列 之 插入排序与shell(希尔)排序
- 【排序算法之】Shell排序和插入排序
- 排序算法(冒泡、选择、插入)附Java演示源码
- 排序之冒泡排序、插入排序及希尔排序
- 【排序】插入排序,希尔排序,选择排序,冒泡排序,堆排序详解及稳定性分析
- 算法训练 阶乘
- 2. CMake-------Multi source documents coding
- java环境配置——java能运行 javac 不是内部命令和外部命令 注意事项!
- 153_Collection集合的常用方法详解_01
- 在虚拟机(CentOS)上配置fastdfs+nginx
- 插入排序之shell排序分析及源码演示
- python 基础教程 24章 虚拟茶话会 async1
- 如何启用设置org.slf4j.Logger打印并输出日志
- jquery实现iframe效果
- 暂停系统中任意驱动的时钟--StopIoTimer
- 多态
- 百度登陆窗口的设计
- python 基础教程 24章 虚拟茶话会 async2
- 移除时钟KTIMER和DPC