插入排序 - 二分插入排序

二分插入是直接插入排序的一种优化,主要是查找方式不同。

稳定性:稳定的 

时间复杂度: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  阅读(173)  评论(0编辑  收藏  举报

导航