编程题:模拟
弗兰被赋予了对一系列数字进行排序的任务。该数组由$$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
答案:若无答案欢迎评论
•在第一阶段,通过反复交换连续元素,将数字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
答案:若无答案欢迎评论