2016-12-12 41 views
-2

配列に適用する選択ソート関数を本から直接コピーしましたが、正しくソートされていません。 coutを使用して要素0、10、および19を出力すると、元の整数が返されます。あなたの最初のforループ上C++の選択並べ替えなし並べ替え並べ替えなし

int main() 
{ 

    int startScan, minIndex, minValue; 
    int exchanges = 0; 
    int selTestArray[20] = {84, 74, 65, 26, 37, 91, 94, 44, 52, 50, 50, 47, 34, 61, 70, 12, 59, 94, 61, 32}; 
    int size = 20; 

    for (startScan = 0; startScan < (size - 1); startScan++); 
    { 
     minIndex = startScan; 
     minValue = selTestArray[startScan]; 
     for (int index = startScan + 1; index < size; index++) 
     { 
      if (selTestArray[index] < minValue) 
      { 
       minValue = selTestArray[index]; 
       minIndex = index; 
      } 
     } 
     selTestArray[minIndex] = selTestArray[startScan]; 
     selTestArray[startScan] = minValue; 
     exchanges++; 
    } 

    cout << exchanges << endl; 
    cout << selTestArray[0] << endl; 
    cout << selTestArray[10] << endl; 
    cout << selTestArray[19] << endl; 

    cin.get(); 
} 
+3

このような問題を解決する適切なツールは、デバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –

+0

ソートがソートされていません。ソートで配列をソートする場合、ソートのソート方法はどれくらいですか? – SergeyA

+0

@ Slavaアスワンを投稿する場合は、コメントとしてではなく回答として投稿してください。 – CiaPan

答えて

3

あなたは最後にセミコロンを持っている:

for (startScan = 0; startScan < (size - 1); startScan++); 
//            ------^ 

あなたは空のループと一回実行されるコードのブロックを持っています。

関連する問題