我的插入排序代码正常工作,用户输入数组大小,然后数组元素然后显示最终的排序列表,我想让它在每次迭代结束时显示排序列表。
我当前的代码可以做到这一点:
这是我希望我的代码执行的操作:
这是我的代码:
for my $i (0..$#foos) {
my $foo = $foos[$i];
my $bar = $bars[$i];
...
}
答案 0 :(得分: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;
}
答案 1 :(得分:0)
如果您在for
中添加另一个简单的main()
循环,并在displayarray
中添加一行代码以添加新行,则它应生成Desired Result < / p>
#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;
}
答案 2 :(得分:0)
我已经在其中添加了代码,以使其能够实时显示。为了遵循您想要的输出,我添加了一个清除控制台功能,该功能可以在将任何文本写出之前清除控制台。这样就可以看到输入新数字后立即看到正在排序的数组的效果。
我还添加了一个显示函数,该函数调用clearConsole(),displayArray()和另一个新函数,即displaySize()。此功能使每次数组大小都更容易阅读,因为所有以前的信息都可以通过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;
}