JAVA算法之二分法插入排序
Posted JAVA笔试面试
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA算法之二分法插入排序相关的知识,希望对你有一定的参考价值。
二分法没有排序,只有查找。所以当找到要插入的位置时。移动必须从最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的记录移后一位。
主要思路
1、二分法查找插入位置
对前面的0~i-1元素进行折半,先与中间的元素比,如果小,则对前半再进行折半查找,否则对后半进行折半查找,直到low<=hight。
2、后移
从i-1个元素开始,把元素逐个往后移动,知道下标为low,将第i个元素插入到第low个元素。
代码实现
public int[] binarySort(int[] array) {
for (int i = 1; i < array.length; i++) {
int temp = array[i];// 待插入到前面序列的值
int low = 0;// 序列的左侧
int hight = i - 1;// 序列的右侧
int middle = -1;// 序列的中间
//while循环找到比array[i]大的数组下标low
while (low <= hight) {
// middle赋值
middle = (low + hight)/2;
if (temp < array[middle]) {
hight = middle - 1;
} else {
low = middle + 1;
}
}
for (int j = i - 1; j >= low; j--) {
// 从i-1到low依次向后移动一位,等待temp值插入
array[j + 1] = array[j];
}
if (low != i) {
array[low] = temp;
}
}
return array;
}
完
以上是关于JAVA算法之二分法插入排序的主要内容,如果未能解决你的问题,请参考以下文章