使用插入排序 c++

Using insertion sort c++

本文关键字:c++ 插入排序      更新时间:2023-10-16

我写了一个插入排序的代码,似乎没有错误(它编译得很好),但它没有打印任何东西或要求用户输入。 我已经看了好几次,我无法弄清楚为什么代码无法正常运行。 谢谢!

#include <iostream>
using namespace std;
void getInput(int a[ ], int n);
void insertionSort(int a[ ], int n);
void print(int a[ ], int n);
int main()
{
    int n=7;
    int a[n];
    getInput(a, n);
    insertionSort(a, n);
    print(a, n);
    system("pause");
    return 0;
}

void getInput(int a[ ], int n)
{
    for(int i; i<n;i++)
    {
        cout<<"Number? ";
        cin>>a[i];
    }
}
void insertionSort(int a[ ], int n)
{
    int temp, j;
    for(int i = 0; i<n; i++)
    {
        temp = a[i];
        j=i;
        while(j>0 && a[j-1] > temp)
        {
            a[j]= a[j-1];
            j=j-1;
        }
    }
}

void print(int a[ ], int n)
{
    for(int i= 0; i<n; i++)
    {
        cout<<a[i]<<"    ";   
    }
    cout<<endl;
}

printgetInput 你的变量 i 没有初始化为 0

您应该将 i 初始化为 0

for(int i = 0; i<n;i++)
{
    cout<<"Number? ";
    cin>>a[i];
}

打印方法相同。

此外,您应该使用 cont var 初始化数组大小。更多详情

const int n = 7;
 void print(int a[ ], int n)
 {
     for(int i; i<n; i++)
 {
    cout<<a[i]<<"    ";   
 }
    cout<<endl;
 }

这是你的函数,你还没有初始化 i 的值。初始化 i =0;来得及:

 for(int i = 0; i<n; i++)