希尔排序
来源:互联网 发布:淘宝宝贝展现量如何刷 编辑:程序博客网 时间:2024/05/24 05:57
希尔排序:
将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入排序,使最终数组成为有序。其又称为缩小增量排序,它是是一种插入排序,是直接插入排序算法的一种威力加强版。
以下是希尔排序过程:
以下是代码:
/************************************************************************//* 希尔排序 *//************************************************************************/void ShellSort(int array[], int n){int increment;int i, j;int temp;for (increment = n / 2; increment > 0;increment/=2) //增量递减{for (i = increment; i < n;i++) //从增量开始{temp = array[i];for (j = i; j >= increment;j-=increment) //每次减去一增量{if (temp<array[j-increment]) //小于相隔增量后面的数,进行交换{array[j] = array[j - increment];}else{break;//跳出循环}}array[j] = temp; //赋值}}}
平均时间复杂度:希尔排序的时间复杂度和其增量序列有关系,这涉及到数学上尚未解决的难题;不过在某些序列中复杂度可以为O(n1.3),最坏的情况为O(n^2),平均情况为O(nlogn)~O(n^2)
空间复杂度:O(1)
稳定性:不稳定
0 0
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- 希尔排序
- deleteDir函数的实现,递归删除指定的目录下的文件
- thrift (转)
- Objective-C 内存管理方式 二
- hdu1180 诡异的楼梯(优先队列bfs)
- 时间片轮转多道程序运行原理
- 希尔排序
- 欢迎使用CSDN-markdown编辑器
- js技术两日期相差天数
- 第一周的Android学习笔记
- Android中design包中的新控件1
- Mac 10.10 yosemite 安装samba替代系统samba组件
- sqoop
- 跟我一起写 Makefile
- Android 隐藏API