使用插入排序 C++
Using insertion sort c++
我写了一个插入排序的代码,似乎没有错误(编译正常),但它不打印任何东西或要求用户输入。我已经看过好几次了,但我不明白为什么代码不能 运行 正确。谢谢!
#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;
}
在print
和getInput
中你的变量i没有初始化为0
你应该将 i 初始化为 0
for(int i = 0; i<n;i++)
{
cout<<"Number? ";
cin>>a[i];
}
打印方法相同。
此外,您应该使用 cont var 初始化数组大小。 For more details
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++)
我写了一个插入排序的代码,似乎没有错误(编译正常),但它不打印任何东西或要求用户输入。我已经看过好几次了,但我不明白为什么代码不能 运行 正确。谢谢!
#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;
}
在print
和getInput
中你的变量i没有初始化为0
你应该将 i 初始化为 0
for(int i = 0; i<n;i++)
{
cout<<"Number? ";
cin>>a[i];
}
打印方法相同。
此外,您应该使用 cont var 初始化数组大小。 For more details
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++)