-->
当前位置:首页 > 题库 > 正文内容

编程题:模拟

Luz3年前 (2022-09-06)题库345
弗兰被赋予了对一系列数字进行排序的任务。该数组由$$N$$个整数组成,每个整数介于1和$$N$$(含)之间,每个整数在数组中只出现一次。$$Frane$$提出了以下分N个阶段运行的排序算法,并将其命名为$$turbosort$$:

•在第一阶段,通过反复交换连续元素,将数字1移动到位置1。
•在第二阶段,数字$$N$$以相同的方式移动到位置$$N$$。
•在第三阶段,数字2移动到位置2。
•在第四阶段,数字$$N−1$$移动到位置$$N−1.$$
•等等。
换句话说,当相位数为奇数时,弗兰将选择尚未选择的最小值,并将其移动到最终位置。在偶数阶段,他选择了尚未被选中的最大数量。
编写一个程序,给定初始数组,输出算法每个阶段的交换数。

### 输入格式:
第一行包含一个整数$$N(1≤N≤100000)$$,数组中的元素数。
以下$$N$$行中的每一行都包含一个介于1和$$N$$(含)之间的整数,即要排序的数组。数组将不包含重复项。
### 输出格式:
对于$$N$$个阶段中的每个阶段,输出交换的数量。

### 得分:
在70%的测试用例中,$$N$$将小于100。

### 输入样例1:
in
3
2
1
3

### 输出样例1:
out
1
0
0


### 输入样例2:
in
5
5
4
3
2
1

### 输出样例2:
out
4
3
2
1
0


### 输入样例3:
in
7
5
4
3
7
1
2
6

### 输出样例3:
out
4
2
3
0
2
1
0







答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。