站外题求解……

学术版

Kaito_Shinichi @ 2024-11-01 20:44:55

为了帮助AC鸭更好的理解选择排序,AC鸭的老师马老师留下了这么一道家庭作业:

马老师给了一个长度为

n 的数组

a,数组下标从

1 开始,并且数组中的所有元素均为非负整数。AC鸭需要将这个数组进行选择排序,然后输出排序后的序列。

但是粗心的AC鸭抄代码时将内层循环条件中的

i,代码如下:

for (int i = 1; i <= n; i++){
    int max_idx = n-i+1;
    for (int j = n-i+1; j >= i; j--)
        if (a[j] > a[max_idx]) 
            max_idx=j;
    swap(a[n-i+1], a[max_idx]);
}

这个代码竟然通过了样例。但聪明的你一定发现了,这样写实际上是错误的,并不能将整个序列进行排序。现在对于给出的数组,你需要输出用AC鸭的代码进行排序后的数组,来帮助AC鸭找到错误。

样例:

输入:
10
8 6 9 5 3 11 3 1 2 10
输出:
8 6 1 3 2 3 5 9 10 11

|