ソート、挿入ソートに直接基本的な考え方を
要素の数が少ないソートの挿入ソートのために非常に効率的である
Nであることが順不同と順序リストテーブルとして見える要素を命じました。
起動順序リストは一つだけの要素が含まれ、順不同リストは、n-1の要素が含まれ、
ソート処理が順不同リストの最初の要素から取り出し、それが適切なのソートされたリストに挿入されます位置、新しい順序付きリストを作る、
シーケンシングプロセスがかもしれ完了するために、N-1回繰り返します。
直接挿入ソート複雑
好ましくは:配列が昇順され、比較演算は、この場合、(N-1)倍の必要性を必要としました。シフトの割り当て後0回。
すなわち、(N)Oの
時間複雑度:はO(n ^ 2)
直接挿入ソートは、同一の構成要素の相対的な順序を変更しない、安定しています。
1 クラス挿入ソート{
2
3。 公共 ボイドソート(){
4。 INT [] = {ARR 1、32 ,. 1、2、43 ,. 5である。};
5
6。 IF(ARR == NULL || arr.length <2 ){
7 リターン;
8 }
。9
10 のためには、(INT = 1はI; Iは<arr.lengthは、I ++ ){
11。 // 順序付けられていない最初の
12である のint = TEMP ARRは、[I]は、
13である // 最後に順序付けられた
14 int型 J = I - 1。;
15 // 配列要素に到達しない最初の要素を挿入する、または現在の要素がより少ない場合
16 ながら(J> = 0 && ARR [J]> TEMP){
17 // シフト素子直後
18は ARR [J + 1] = ARR [J];
19 J、;
20である }
21は、 IF(。!= J + 1 I)は{
22は ARR [J + 1] = ; TEMP
23である }
24 }
25 }
26です }
バイナリ挿入ソート
、効率を改善するために、比較要素の数を減らすために、挿入された位置に順序付け領域における新たな要素を見つけるための
挿入位置を決定するためにバイナリサーチアルゴリズムを使用して。
バイナリ探索最悪時間計算量:O(log2n)
X = log2n:したがって、比較の数がソートバイナリサーチ
比較及び後方割付:バイナリサーチ時間のかかる操作は挿入ソートを有します。次の時間計算量は:
1)最良の場合:位置参照は割り当て、シフトを必要とすることなく、整然と後ろゾーンの最後のビットである
log2n:比較の数です。即ち、O(log2n)
2)、最悪の場合:最初の位置注文領域を見ている位置であり、それは比較の数のために必要である:log2n、
N(N-1)/ 2 +に必要な演算の数の割り当て( N-1)倍。即ち、O(^ N-2)
3)プログレッシブ時間複雑度(平均時間計算):O(N ^ 2) のバイナリ検索ソートが安定している、それは同じ要素の相対的な順序を変更しません。