我正在学习排序算法。我搜索了插入排序代码,当我自己尝试它时,它没有用完。有人可以在我的代码中找到错误吗?
#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];
}
}
答案 0 :(得分:2)
while((key<a[i])&&(i>=0));
这里有一个无限while
循环。末尾的半冒号意味着while循环体是空的。因此,i
永远不会递减,循环将永远运行。
此外,在尝试访问索引值之前,您需要检查索引是否有效(i >= 0
)。
所以更改以下行。
while((i >= 0) && (key < a[i]))