增强版插入排序--二分的结合
2017-09-27 20:06
423 查看
public class BinaryInsertSort {
public static void main(String[] args) {
int[] arr = {5,2,4,6,1,3};
arr = BinaryInsertSortFun(arr);
System.out.println(Arrays.toString(arr));
}
}
public static void main(String[] args) {
int[] arr = {5,2,4,6,1,3};
arr = BinaryInsertSortFun(arr);
System.out.println(Arrays.toString(arr));
}
public static int[] BinaryInsertSortFun(int[] arr){ for(int j=1;j<arr.length;j++){ int i = j-1; int key = arr[j]; //二分查找,找到插入位置 int low = 0; int high = i; while(low<=high){ int mid = (low+high)/2; if(arr[mid]<key){ low = mid+1; }else{ high = mid-1; } } //将插入位置之后的元素向后移动一个位置 for(int k=j-1;k>=low;k--){ arr[k+1]=arr[k]; } //插入 arr[low] = key; } return arr; }
}
相关文章推荐
- 数形结合 + 二分凸壳3题
- 数据结构图文解析之:直接插入排序及其优化(二分插入排序)解析及C++实现
- 三种常用的插入排序算法--直接插入排序、二分插入排序、希尔排序
- 三种插入排序的分析(直接插入-二分插入-Shell排序)
- 插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序
- Java实现二分插入排序
- 优化的直接插入排序(二分查找插入排序,希尔排序)
- 优化的直接插入排序(二分查找插入排序,希尔排序)
- 二分插入排序(java)
- [数据结构]二分插入排序
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- 排序算法三:二分插入排序
- 冒泡排序,插入排序,二分查找
- 插入排序哈夫曼树结合堆排序 POJ(3253)
- 二分查找插入排序
- C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法,插入排序)
- 排序算法---二分插入排序
- C实现三种插入排序-简单插入排序、二分插入排序、希尔插入排序
- 二分插入排序
- ZT 二分插入排序也称折半插入排序