插入排序不起作用

时间:2017-01-14 10:43:44

标签: c++

我正在学习排序算法。我搜索了插入排序代码,当我自己尝试它时,它没有用完。有人可以在我的代码中找到错误吗?

#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];
    }
}

1 个答案:

答案 0 :(得分:2)

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

这里有一个无限while循环。末尾的半冒号意味着while循环体是空的。因此,i永远不会递减,循环将永远运行。

此外,在尝试访问索引值之前,您需要检查索引是否有效(i >= 0)。

所以更改以下行。

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