【排序算法】二分插入排序(折半排序)白話講解

二分插入排序(折半排序)

  對於插入排序,如果比較操作的代價比交換操作大的話,可以採用二分查找法來減少比較操作的次數,我們稱爲二分插入排序

算法描述:

  在直接插入排序的基礎上,利用二分(折半)查找算法決策出當前元素所要插入的位置。

二分查找:

  1.找到中間元素,如果中間元素比當前元素大,則當前元素要插入到中間元素的左側;

  2.否則,中間元素比當前元素小,則當前元素要插入到中間元素的右側。

  3.找到當前元素的插入位置 i 之後,把 i 和 high 之間的元素從後往前依次後移一個位置,然後再把當前元素放入位置 i。

代碼

private static void insertSort2(int[] a) {
	for(int i=0;i<a.length-1;i++){
		int temp = a[i+1];
		int low = 0;
		int high = i;
		int mid;
		while(low<=high) {
			mid = (low+high)/2;
			if (a[mid]>temp) {
				high = mid-1;
			}else{
				low = mid+1;
			}
		}
		for(int j=i;j>=high+1;j--){
			a[j+1]=a[j];
		}
		a[high+1]=temp;
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章