我是cpp语言的新手。我尝试解决插入排序问题。但是,在提交给在线评委时发生了演示错误。在程序中,我必须为插入排序的每个步骤显示一行中间序列。到目前为止,这是我的代码:
void InsertionSort(int *arr, int n)
{
for (int i = 1; i < n; i++)
{
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
for (int k = 0; k < n; k++)
cout << arr[k] << " ";
cout << endl;
}}
输出:
1 2 3<Here is space.want to remove it>
1 2 3<Here is space.want to remove it>
先感谢您。
不要std::cout << arr[k] << ' '
所有n
元素。将其应用于除最后一个之外的每一个。然后,输出该元素,而不是让它后跟一个空格,然后是'\n'
或std::endl
,最好是前一个:
for (int k = 0; k < n - 1; k++)
cout << arr[k] << " ";
cout << arr[n - 1] << '\n';
注意在n - 1
循环条件下n
而不是for()
。除了最后一个元素之外,这将适用于所有元素。
然后,我们需要以不同的方式处理最后一个元素(由n - 1
th索引表示) - 我们不想打印它后跟" "
,但是rathar换行。这就是为什么我们做<< '\n';
。请注意,std::endl
也会起作用,但这是不必要的。我鼓励你阅读有关std::endl
vs '\n'
的内容。