插入排序 - 二分插入排序
二分插入是直接插入排序的一种优化,主要是查找方式不同。
稳定性:稳定的
时间复杂度:O(n^2)
public class BinaryInsertSort {
public static void main(String[] args) {
int temp;
int left = 0, right, mid;
int[] array = { -2, 61, 24, 43 ,11,342,121,10,123,9};
for (int i = 1; i < array.length; i++) {
right = i - 1;
temp = array[i];
while (left <= right) {
mid = (left + right) >> 1;
if (array[mid] < temp) {
left = mid + 1;
} else {
right = mid - 1;
}
}
// 元素后移
for (int j = i - 1; j >= left; j--) {
array[j + 1] = array[j];
}
if (left != i) {
array[left] = temp;
}
left = 0;
}
for (int i : array) {
System.out.print(" "+i);
}
}
}
posted on 2017-08-03 18:00 一只小蜗牛12138 阅读(179) 评论(0) 收藏 举报
浙公网安备 33010602011771号