2017-01-14 10 views
-5

私はソートアルゴリズムを学習しています。私は挿入のソートコードをgoogledと私は自分自身でそれを試したときにうまくいきません。誰かが私のコードでエラーを見つけられますか?挿入並べ替えが動作しません

#include<iostream> 
using namespace std; 
int main() 
{ 
    int i,size, a[40], key; 
    cout << "Enter size: "; 
    cin >> size; 
    for(int o=0; o<size; o++) 
    { 
     cin >> a[o]; 
    } 
    //insertion sort 
    for(int j = 1; j <= size-1; j++) 
    { 
     key = a[j]; 
     i = j-1; 

     while((key < a[i]) && (i >= 0)); 
     { 
      a[i + 1] = a[i]; 
      i = i - 1; 
     } 
     a[i + 1] = key; 
    } 
    cout << "\nSorted list is as follows\n"; 
    for(int o = 0; o < size; o++) 
    { 
     cout << endl << a[o]; 
    } 
} 
+3

実行すると何が問題になりますか?問題を記述する –

+1

http://stackoverflow.com/help/mcve –

+1

@userを読んでください。SOはコーディングサービスを要求していません。 – nicomp

答えて

2
while((key<a[i])&&(i>=0)); 

あなたはここに無限ループwhileを持っています。最後のセミコロンは、whileループ本体が空であることを意味します。したがって、iは減ることはなく、ループは永遠に実行されます。

また、値にアクセスする前にインデックスが有効かどうか(i >= 0)を確認する必要があります。

次のように行を変更してください。

while((i >= 0) && (key < a[i])) 
関連する問題