#2883. 快速排序
快速排序
题目描述
在 课上学会了快速排序。
这天的模拟赛上,第一题是一道排序的板子。他写了一个快速排序的代码,很快通过了样例并交了上 去。
然而,比赛结束前的两分钟,他意识到自己的快排忘记随机化了,并且他来不及修改了。
出成绩后,发现自己爆零了。
"按理说至少有暴力分啊,为什么会爆零啊……"
查看了一下测试数据,他发现数据损坏了,一些数字被替换为了 。
定义,与 、与任何整数、任何整数与 比较的结果均为假!即:(以下为伪代码)
boolean operator < (Int x, Int y)
if isnan(x) or isnan(y)
then return false
else return x<y
的快排代码实现是: (以下为伪代码)
quicksort (Int[] A, int L, int R)
if L >= R
then return
Int Left <- A[L]
Int[] B
int Mid = L
int Bid = 0
for int i L+1 to R by 1 do
if A[i] < Left
then A[Mid] <- A[i]
Mid <- Mid + 1
else B[Bid] <- A[i]
Bid <- Bid + 1
end
for int i 0 to Bid - 1 by 1 do
A[Mid + i + 1] <- B[i]
A[Mid] <- Left
quicksort (A, L, Mid - 1)
quicksort (A, Mid + 1, R)
修好了数据,重测后得到了暴力分。但是他想知道自己的暴力在原来损坏的数据上的输 出。
输入格式
输入包含多组数据。第一行输入一个正整数表示数据组数。
之后对于每组数据,第一行是一个正整数代表要排序的数的个数;
接下来一行个字符串,其要么是内的正整数,要么是字符串 。
其中。
输出格式
对于每组数据,输出一行个字符串,每个字符串是一个正整数或 代表 的程序 排序后的结果。
样例
输入样例
3
4
2 4 1 3
7
nan 2 4 nan 1 nan 3
22
1 nan 1 nan 4 nan nan nan nan 5 nan nan nan nan nan 1 nan 4 nan nan nan nan
输出样例
1 2 3 4
nan 1 2 3 4 nan nan
1 nan 1 nan 1 4 nan nan nan nan 4 5 nan nan nan nan nan nan nan nan nan nan
提示
对于 的数据,。
对于 的数据,。
另有 的数据,输入中不包含 。
另有 的数据,输入的每一个字符串有 概率为 有 概率为一个内均匀随机的 正整数。
另有 的数据,每组数据中的字符串只包含至多一种正整数。
对于 的数据,各组测试数据的之和不超过。