我插入排序代码工作正常,然后在用户输入数组的大小则数组元素显示最终排序列表,我想让它在每次迭代的结尾展示SORTD列表。
我当前的代码做到这一点:
这就是我希望我的代码,这样做:
这里是我的代码:
#include <iostream>
using namespace std;
void insertionsort(int A[], int n)
{
int value,hole,i;
for(int i=1; i<n; i++)
{
value = A[i];
hole = i;
while(hole > 0 && A[hole-1] > value)
{
A[hole] = A[hole-1];
hole = hole -1;
}
A[hole] = value;
}
}
void displayarray(int A[], int n)
{
for(int i=0; i<n; i++)
cout << A[i] << ";";
}
int main()
{
int n;
cin >> n;
int A[n];
for(int i=0; i<n; i++)
cin >> A[i];
insertionsort(A,n);
displayarray(A,n);
return 0;
}
如果您在for
再添简单main()
循环,并添加一行代码在displayarray
添加一个新行,它应该产生Desired Result
#include <iostream>
using namespace std;
void insertionsort(int A[], int n)
{
int value,hole ;
for(int i=1; i<n; i++)
{
value = A[i];
hole = i;
while(hole > 0 && A[hole-1] > value)
{
A[hole] = A[hole-1];
hole = hole -1;
}
A[hole] = value;
}
}
void displayarray(int A[], int n)
{
for(int i=0; i<n; i++)
cout << A[i] << ";";
cout << "\n";
}
int main()
{
int n;
cin >> n;
int A[n];
for(int i=0; i<n; i++){
cin >> A[i];
}
for(int i=0; i<n; i++){
if(i > 0){
insertionsort(A,i+1);
displayarray(A, i+1);
}
}
return 0;
}
见A[hole] = value;
后添加的代码
#include <iostream>
using namespace std;
void displayarray(int A[], int n)
{
for(int i=0; i<n; i++)
cout << A[i] << ";";
}
void insertionsort(int A[], int n)
{
int value,hole,i;
for(int i=1; i<n; i++)
{
value = A[i];
hole = i;
while(hole > 0 && A[hole-1] > value)
{
A[hole] = A[hole-1];
hole = hole -1;
}
A[hole] = value;
// Call displayarray at end of each pass
// Passing `i+1` as second parameter gives you desired result
displayarray(A,i+1);
cout << endl;
}
}
int main()
{
int n;
cin >> n;
int A[n];
for(int i=0; i<n; i++)
cin >> A[i];
insertionsort(A,n);
//displayarray(A,n); //Commented this line
return 0;
}
我已经添加代码到让它显示,因为它去一起。试图追随你所需的输出我已经添加任何文字写出来之前,它会清除控制台清除控制台功能。这允许看到阵列的效果被尽快新的数字输入的命令。
我还添加了调用clearConsole()()显示功能,displayArray和另一个新的功能,我也添加了显示尺寸()。此功能可以让用户更容易的可读性每次前述任何信息,表述数组的大小将与clearConsole被删除()。
#include <iostream>
void insertionsort(int A[], int n)
{
int value, hole, i;
for (int i = 1; i < n; i++)
{
value = A[i];
hole = i;
while (hole > 0 && A[hole - 1] > value)
{
A[hole] = A[hole - 1];
hole = hole - 1;
}
A[hole] = value;
}
}
void displayarray(int A[], int n)
{
for (int i = 0; i < n; i++)
std::cout << A[i] << ";";
}
void clearConsole()
{
std::cout << std::flush;
system("CLS");
}
void displaySize(int size)
{
std::cout << "An array of size: " << size << "\n" << std::endl;
}
void display(int A[], int n, int size)
{
clearConsole();
displaySize(size);
displayarray(A, n);
}
int main()
{
int n;
std::cin >> n;
clearConsole();
displaySize(n);
int *A = new int[n];
for (int i = 0; i < n; i++)
{
std::cin >> A[i];
insertionsort(A, i+1);
display(A, i+1, n);
}
insertionsort(A, n);
displayarray(A, n);
return 0;
}