在C ++中删除输出空间

问题描述 投票:0回答:1

我是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>

先感谢您。

c++11 formatting output
1个回答
1
投票

不要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 - 1th索引表示) - 我们不想打印它后跟" ",但是rathar换行。这就是为什么我们做<< '\n';。请注意,std::endl也会起作用,但这是不必要的。我鼓励你阅读有关std::endl vs '\n'的内容。

© www.soinside.com 2019 - 2024. All rights reserved.