排序算法之二分插入排序Java版
2015-07-01 21:13
337 查看
/** * 二分插入排序是直接插入排序的改进版 * 二分插入排序是不稳定排序 * * 原理: * 将一个记录插入到已排序好的有序序列中,从而得到一个新,记录数增1的有序序列。 * 二分插入排序用二分法找出新记录在有序序列中的位置。 */ public class BinaryInsertionSort { public void sort(int[] arr) { int i, j, left, right, center, tmp, len = arr.length; for (i = 1; i < len; i++) { //如果新记录小于有序序列的最大元素,则用二分法找出新纪录在有序序列中的位置 if (arr[i] < arr[i - 1]) { left = 0; right = i - 1; while (left < right) { //获取中间位置索引,把有序序列分成两个子序列 center = (right + left) / 2; if (arr[center] < arr[i]) { //如果新纪录大于中间位置记录,则在右边序列继续进行二分 left = center + 1; } else { //如果新纪录小于中间位置记录,则在左边序列继续进行二分 right = center - 1; } } tmp = arr[i]; //把比arr[i]大的记录往后移 for (j = i; j > left; j--) { arr[j] = arr[j - 1]; } arr[left] = tmp; } } } }
相关文章推荐
- 【Java EE 学习 24 下】【注解在数据库开发中的使用】【反射+注解+动态代理在事务中的应用service层】
- org.springframework.orm.hibernate4.support.OpenSessionInterceptor
- javaSE学习笔记之控制语句
- 如何更改Java括号中的默认对齐
- 用java实现大文件分割、排序、合并
- 学习笔记_Java_day13_JSP三大指令()
- javaSE学习笔记之运算符
- 《Java程序实习》日记(周三)
- Java之旅(2)—反射
- java自己主动打开包装盒很容易导致两个误区
- (JAVA)找不到或无法加载主类 com.sun.tools.javac.main
- git基础
- java中四种引用类型
- LeetCode229 MajorityElementII java题解
- Java基础知识整理(三)
- java文本相似度计算
- 黑马程序员——高新技术---枚举及部分JDK1.5新特性
- 《Java程序设计》第17周课程设计:《猜猜看》游戏 第三天
- Java ClassLoader个人见解
- 将数据导出到Excel(java操作Excel)