排序算法之希尔排序Java版
2015-07-01 21:41
411 查看
/** * * 希尔排序 * 希尔排序又叫缩小增量排序,是直接插入排序算法的一种更高效的改进版本 * 希尔排序属于不稳定排序 * 希尔排序空间复杂度O(1) * 希尔排序的时间复杂度和其增量序列有关系,平均时间复杂度O(n^1.3) * * 基本原理: * 先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。 */ public class ShellSort { public void sort(int[] arr){ int i, j, tmp, len = arr.length; //希尔排序步长 int step = len / 2; //缩小步长,直到步长为0 while(step > 0){ for(i = step; i < len; i++){ //如果新记录小于有序序列中的最大记录,则进行直接插入排序 if(arr[i] < arr[i - step]){ tmp = arr[i]; j = i - step; while(j >= 0 && arr[j] > tmp){ arr[j + step] = arr[j]; j -= step; } arr[j + step] = tmp; } } step /= 2; } } }
相关文章推荐
- 03 Java 并发 线程安全理论基础
- Struts2文件上传,以及各种注意事项
- java学习日记
- 反射机制--调用构造函数和成员方法、制作帮助文档
- Java学习笔记六(I/O流)
- JAVA集合
- JAVA之面向对象编程学习
- Java IO最详解
- Android版本与过高的JDK版本不兼容问题
- JSON 之JAVA 解析
- 排序算法之直接插入排序Java版
- 第三章节-Spring MVC介绍(非注解方式)
- 排序算法之二分插入排序Java版
- 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】
- org.springframework.orm.hibernate4.support.OpenSessionInterceptor
- javaSE学习笔记之控制语句
- 如何更改Java括号中的默认对齐
- 用java实现大文件分割、排序、合并
- 学习笔记_Java_day13_JSP三大指令()
- javaSE学习笔记之运算符