【数据结构与算法设计】希尔排序
2016-04-14 15:14
232 查看
希尔排序( 最坏O(N^2) )
重要概念:增量序列 增量增量hk习惯于取len/2,然后递减hk=hk/2,直到等于1。
对于hk排序:下标为hk,hk+1,...,len-1 元素i,i放到i,i-hk, i-2hk...正确的位置上。
个人理解:也就是间隔hk排序,最后会进行间隔1排序,也就是全局排序。
//默认是升序 public void sort(int[]nums){ int len = nums.length; //取hk=len/2 for(int hk = len/2;hk>0;hk/=2){ for(int i=hk;i<len;i++){ //从i开始,以hk的间隔往前遍历,找到nums[i]合适的位置插入 int cur = nums[i]; int j=i; for(j=i;j>=hk;j-=hk){ if(cur<nums[j-hk]) nums[j]=nums[j-hk]; else break; } nums[j]=cur; } } }
相关文章推荐
- 数据结构第一章
- 线性表顺序存储结构实现(线性表-数据结构作业)
- C/C++基础知识02---数据结构
- 数据结构知识点总结
- 数据结构(并查集):COGS 260. [NOI2002] 银河英雄传说
- 【数据结构】Orthogonal-List 十字链表(更新时间:2016-04-15)
- 数据结构Step by Step之树(1)- 二叉树 前序、中序、后序 LeetCode105根据前序中序的顺序构造树
- 数据结构--单向链表C实现
- 数据结构之栈
- 【数据结构】Doubly-Linked List双向链表(更新时间:2016-04-13)
- lightoj 1085
- HashMap的数据结构
- 数据结构学习笔记(七)--图
- 数据结构与算法习题汇总(3)
- 数据结构实验之求二叉树后序遍历和层次遍历
- 数据结构实验之二叉树四:还原二叉树
- Huffman树的简单实现
- 数据结构中八大排序算法
- 用于并行计算的多线程数据结构,第 2 部分: 设计不使用互斥锁的并发数据结构
- 用于并行计算的多线程数据结构,第 1 部分: 设计并发数据结构