算法--插入排序
2015-06-04 20:23
387 查看
Java版
二分插入排序
public class InsertionSort { public static void main(String[] args) { int[] a = { 15, 25, 77, 1, 56, 4, 7, 6 }; for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } System.out.println(" "); insertSort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + " "); } } public static int[] insertSort(int[] array) { if (null == array || array.length < 2) { return array; } // 遍历数组 for (int i = 1; i < array.length; i++) { // 从后到前遍历 for (int j = i; j > 0; j--) { // 找到当前数的位置 if (array[j] < array[j - 1]) { int temp = array[j]; array[j] = array[j - 1]; array[j - 1] = temp; } } } return array; } }
二分插入排序
public static int[] insertSort2(int[] array) { // 遍历数组 for (int i = 0; i < array.length; i++) { // 从后往前遍历 int temp = array[i];// 当前值取出来 int left = 0; // 左边界 int right = i - 1; // 右边界 int mid = 0; while (left <= right) { mid = (left + right) / 2; // 二分左区间 if (temp < array[mid]) { right = mid - 1; } // 二分右区间 else { left = mid + 1; } } // 比当前数大的向后移 for (int j = (i - 1); j >= left; j--) { array[j + 1] = array[j]; } // 将当前数插入正确位置 if (left != i) { array[left] = temp; } } return array; }
相关文章推荐
- java第三次试验报告
- Jsoup解析html
- myeclipse连接mysql遇到的小问题
- 【Distinct Subsequences】cpp
- MiniTwitterSimulate
- 对话框传值
- mysql --master-data 参数
- 6.1 理解对象
- [Python] 机器学习库资料汇总
- 表值函数与JS中split()的联系
- 黑马程序员 Java的基础常识和Java的基础知识(一)
- Android中asset文件夹和raw文件夹区别
- Java数据库之JDBC
- C++ 类中特殊的成员变量(常变量、引用、静态)的初始化方法
- 数字图像处理领域的二十四个典型算法及vc实现
- SVN 目录操作
- 005-进制与位运算
- POJ 1195 Mobile phones(二维树状数组)
- 探索WebKit内核(五):智能指针解析
- NSNull