/** * 「二分插入排序」,利用二分查詢優化插入排序中的定位部分。* 《演算法導論》,習題2.3-6
* observe that the while loop of lines 5 - 7 of the insertion-sort procedure in
* section 2.1 uses a linear search to scan (backward) through the sorted
* subarray a[1 j - 1]. can we use a binary search (see exercise 2.3-5)
* instead to improve the overall worst-case running time of insertion sort to
*@author lihzh(苦逼coder)
*/public
class insertsortwithbinarysearch ;
public
static
void main(string args)
input[index] = key;
}
/*
* 複雜度分析:
* 最佳情況,即都已經排好序,則無需右移,此時時間複雜度為:θ(n lg n)
* 最差情況,全部逆序,此時複雜度為θ(n^2)
* 所以針對2.3-6問題,無法將最差情況的複雜度提公升到θ(n lg n)。
*///列印陣列
printarray();
}
/**
* 二分查詢
* @param input 給定已排序的待查陣列
* @param target 查詢目標
* @param from 當前查詢的範圍起點
* @param to 當前查詢的返回終點
* @return 返回目標在陣列中,按順序應在的位置
*/private
static
int binarysearch(int input, int target, int from, int to)
else
}
else
else
}
}
private
static
void printarray()
}
}
二分插入排序
基本思想 1.取arr 1 為關鍵字key,將key插入前面已拍好的序列中。2.取arr 2 為關鍵字key,將key插入前面已拍好的序列中。3.取arr n 1 為關鍵字key,將key插入前面已拍好的序列中。include include define n 10 void binsertsort...
二分插入排序
include 二分插入法排序 二分排序的時間複雜度是o n logn 空間複雜度o 1 是穩定排序 void binary insert sort int a,int len else 如果當前元素比中間元素大,當前元素要插入到中間元素的右側 for j i 1 j high j 元素後移 a h...
二分插入排序
一 折半插入排序 二分插入排序 二 演算法原理 演算法的基本過程 1 計算 0 i 1 的中間點,用 i 索引處的元素與中間值進行比較,如果 i 索引處的元素大,說明要插入的這個元素應該在中間值和剛加入i索引之間,反之,就是在剛開始的位置 到中間值的位置,這樣很簡單的完成了折半 2 在相應的半個範圍...