Java 八大排序之——直接插入排序
2015-10-17 14:01
405 查看
分析
将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。
如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的。
代码
[code] public static void InsertSort(int array[]) { for (int i = 1; i < array.length; i++) { if (array[i] < array[i - 1]) {// 小于,则后面向前移动 int j = i - 1; int temp = array[i];// 哨兵,存储待排序元素 array[i] = array[i - 1];// 先后移一个位置 //temp < array[j] !!! for (; j >= 0 && temp < array[j]; j--) { array[j + 1] = array[j]; } array[j + 1] = temp;// 插入到正确位置 } common.print(array); } }
[code] public static void swap(int[] array, int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; }
相关文章推荐
- Java 八大排序之——冒泡排序
- eclipse项目更换数据库
- Amazon OA2准备——迷宫
- java 获取中英混合的字符长度
- JAVA开源爬虫,WebCollector,使用方便,有接口。
- 百度云推送java端报错parameter msg must be Json-Array-String解决方法
- JDK和Cglib实现动态代理实例及优缺点分析
- JDK和Cglib实现动态代理实例及优缺点分析
- JDK和Cglib实现动态代理实例及优缺点分析
- java date String 类型相互转换
- java中&和&&的区别
- ubuntu15.04环境下编译jdk8源码
- JAVA字段的初始化规律
- SpringMvc 返回数据为json
- ubuntu15.04 搭建eclipse环境
- 今天瞅瞅Java中的常见异常
- Java反射获取泛型类型
- 关于SimpleDateFormat的使用方法
- Spring3中用注解直接注入properties中的值
- springMVC3学习(一)--框架搭建