元の配列:A = [8,6,2,3,7,9,1]; ASC要件。
ステップ1:最初のため8ので、固定及び8,6及び8が原因で8未満6を作るため、交換シート6,8ように、アレイは、6,8,2,3,7,9,1となります。これは比較的完全です。
STEP2:その前部の一つ、すなわち8を超えると2,2が8未満であるため、シート2と交換8は、アレイが6,2,8,3,7,9,1となります。
6 2にした後、シートを完了した後2〜6の交換比率は、2,6,8,3,7,9,1アレイとなります。このラウンドが終了した比較。
STEP3:3~8の比で、8席の交換機3は、アレイは、2,6,3,8,7,9,1となります。
図3及び図6に示すように、シート3及び6交換の比率は、2,3,6,8,7,9,1を得ました。
2~3の比、このラウンド比較のうち、ループのうち、3は2時間よりも良好なので、同一のシートからです。
STEP4:そう......
コード
1 用(INT I = 1 ; I <N - 、Iは++){ // 外側のループは、実際に処理がされる[i]が右席見つけるために挿入されている 2 ため(int型 J = I、J> 0 ; J- - ){ // 内部ループ、比較が戻っているように、それは保存保存ある 3。 IF([I] < [J]) 4。 スワップ([I]、A [J]); // スワップ機能効果は、交換シートである 。5 他 BREAK 。6 } 。7 }
あなたは、コードの行数が小さな点を書きたい場合は、上記のコードを変更することができ、
1 用(INT I = 1 ; I <N - 、Iは++){ // 外側ループは、全体のプロセスは、実際には[i]は右インサート座見つけるために 2 のための(int型 J = I、J> 0 && A [Iを] <[J]; J){ // 内部ループ、それが保存保存され、比較が戻っているように 3。 スワップ([I]、[J]); // 役割スワップ機能が切り替えられますシート 4 } 5 }
最初のコードを見ることができるように先に第二の選別サイクル層の端部に挿入されます。
上記の2つのコードは、座席のこの交換の使用は、時間がかかりすぎるので、次の点が改善されて機能を入れ替えます
1 ための(int型私は= 1、私は++、N- <){ // 全体的なアイデアは、[I]は適切なシートに挿入されている見つけることである 2 INT Eは= [I]; 3 INT J; // J素子を保持しますEは、シートに挿入されるべきである 4。 ため(J = I、J> 0 && [J- 1 ]> E、J、){ 5。 [J]は[J-を= 1 ]; 6 } 。7 [J] = E、 8 }
したがって、アイデアは、プライマリおよびセカンダリ1つの割当を改善なることです「比較、1つのだけ割り当て」。
最初に使用スワップ機能は、一次スワップの使用が意見交換ですが、交換は3回の割り当て(高校が話題)になると。