配列決定法を挿入:記録素子が挿入され、前部要素の大きさ比較で、クエリを挿入位置に、それは要素より大きい次いで挿入の空の位置、挿入された要素に戻ります。
残りの手順②と同じ。。。
ここで最適化する塩基からコードの3種類があります
// 1 空隙 InsertSort(INT *、int型N) { ため(int型 i = 1 ; iがn <; ++ I) { 場合([I] <[I - 1 ]) { int型の TEMP = [私]; 以下のために(int型 J = 0 ; J <I ++ J) { 場合(温度< [J]) { ための(int型 K = iは、K> J; k-- ) [K] [Kが= - 1]; [J] = TEMP。 破ります; } } } } }
// 2 空隙 InsertSort(INT *、int型N) { int型私は、jは、 用(i = 1 ; iがn <; iは++ ) { 場合([i]が<I - 1 ]) { int型の TEMP = [I]。 用(J = I; J> = 0 && [J- 1 ]> TEMP; j-- ) { [j]は = [jは- 1 ]。 } [j]は = TEMPと、 } } }
// 3
ボイド InsertSort(INT *、int型N) { int型温度; 以下のために(int型 i = 1 ; iがn <; iは++ ) { int型低= 0、ハイ= I - 1 。 TEMP = [I]。 一方(低<= 高) { int型ミッド=(ハイロー+)/ 2 。 もし(温度< [中間]) 高 =ミッド- 1 。 他 低 =ミッド+ 1 ; } のための(int型 - ; J>低J = J) { [j]は [J = - 1 ]。 } [低] = TEMP。 } }
主な方法:
INT のmain() { int型 ARR [] = { 9、2、3、1、5、4、7、8、6 }。 INT、N = はsizeof(ARR)/ はsizeof(INT )。 InsertSort(ARR、N)。// 插入排序 ため(int型 i = 0 ; iがn <; iは++ ) { COUT << ARR [I] << " " 。 } COUT <<endl; リターン 0 ; }