1つの#include <stdio.hの> 2 の#define N 12である 3。 // 最後の要素の戻り統計配列インデックスの長手方向の長さ 4。 int型(長INT [N]){ 5。 ための(int型 I = 0 ;私は= Nを< ; I ++ ){ 6。 IF([I] == 0)を返す I-を1。; 7 。8 } 。9 } 10 // プリントアウトアレイ要素 。11 ボイド(表示INT [N]){ 12である ため(INT I = 0; Iは、N <; Iを++ ){ 13は、 IF([I] =!0)のprintf(" %の4D " 、Aは、[I]); 14 15 } 16 } 17 18である // 単純選択ソート 。19 空隙 SelectSort(int型A [N]){ 20は INT 分; 21である INT DEX; // 最小インデックス 22は、 INT TEMP; 23である ため(INT K = 0 ; K <=長さ(A) - 1 ; Kは++){ // カーソルKセット 24 =分A [K]; 25 用(INT I = K; IはA(=長さ<) - 1 ; Iは++){ // 最小値を見つけ、カーソルは、アレイの最も左側の位置に配置され、カーソルが右に移動し、 26である 27 / *!!この文では動作しませんソートあり、その理由は?IF(分<A [I +. 1]) {28 DEX = K; 29} * / 30 (min> IF Aは、[I +は1。]){ 31である 分= A [I +は1 ]; 32 DEX = I + 1 、 33れます } 34である } 35 TEMP = ; A [K] 36 [K] = 分; 37 [ A [DEX] = TEMP; 38である } 39 } 40 41である INTメイン(ボイド{) 42である INT A [N] = { 2、3、7、1、22であり、3、5、34であります、467 }; // A手動アレイ生成 43である のprintf(" %Dの\のN- " 、長さ(A))、 44である 。SelectSort(A) 45 を表示する(A); //出力1233573434467結果が正しい 46で 戻り 0 ; 47 }
最初のコード。アイデアは、左にカーソルKを常に比較されるの左、挿入の最小に非常に単純な要素です。(あることをここに挿入、実際には、オリジナルの左端の要素の最小の要素はこれだけ習慣を話すように、真正な使用はありませんが、挿入していたほとんどのソートアルゴリズム交換した場合)
選択されたコードは、以下のフォームにソートする場合
ボイド SelectSort(INT A [N]){ int型分; INT DEX; // 最小インデックス のint TEMP; のための(int型 kは= 0 ; K <=長さ(A) - 1 ; kは++){ // カーソルKを設定します =分A [K]; のため(int型 I = Kと、私は=長さ(A)を< - 1。 ; Iは++){ // 最小値を見つけ、カーソルが配列の左端の位置に配置され、カーソルが右に移動します。 場合(分<iは+ 1 ]){ DEX = K。 } もし(分> [iが+ 1 ]){ 分 = [I + 1 ]。 DEX = I +は1 ; } } TEMP = [K]。 [K] = 分。 [DEX] = TEMP。 } }
出力は、それが注目されるべきである2371223534 467となり
場合(分<[I + 1 ]){
DEX = K。
}このコードは、プログラムコードの追加後、必要ではありませんが、正しい結果を得ることはありません。分<[私は1 +]は、のように何もしないとき。