我琢磨出一种奇怪的排序:
对于输入的 n 个数据,用 vector 容器和两个数组head和tail及一个变量 p 维护至多 n 个队列,规则为:
1.初始时,p=0。
2.输入元素 ai 时,若 ai≥ai−1,不作任何变动。
3.输入元素 ai 时,若 ai<ai−1,p←p+1。
4.当元素 ai 输入完成后,让 ai 进入第 p 个队列, tail[p]←tail[p]+1。
5.当所有数据输入完成后,开始排序,每次在 p 个满足 head≤tail 的队列的第 head 项中求出最小值,最小值所在的队列 head[min]←head[min]+1。
求问:
1.此排序算法是否可行?
2.最好情况下和最坏情况下的时间复杂度是多少?
蒟蒻认为最好情况下是 O(n),最坏是 O(n2),但这是凭感觉想出来的,感觉完全不对。
(本人萌新,如果 KATEX 有错用之处请各位大神指正。)