java-折半插入排序法
在插入排序法的基础上改进了通过比较找到数据插入的位置,通过二分法寻找数据插入的位置,移动数据的方式没有变
代码:
public class HalfInsertSort {
public int[] halfInsertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int right = arr[i]; // 记录要插入的数据
int low = 0; // 左指针
int high = i - 1; // 右指针
while (low <= high) {// 折半法寻找插入位置
int mid = (low + high) / 2;
if (arr[mid] > right) {
high = mid - 1;
} else {
low = mid + 1;
}
}
int j = i - 1; // 把数据往后移动
while (j >= low) {
arr[j + 1] = arr[j];
j--;
}
arr[low] = right;// 将数据插入找到的位置
}
return arr;
}
}