插入排序不起作用

Insert Sort not working

本文关键字:不起作用 插入排序      更新时间:2023-10-16

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

#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 followsn";
    for(int o = 0; o < size; o++)
    {
        cout << endl << a[o];
    }
}
 while((key<a[i])&&(i>=0));

你在这里有一个无限while循环。末尾的分号表示 while 循环体为空。因此,i永远不会递减,循环永远运行。

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

因此,请按如下所示更改行。

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