【问题描述】
输入一个整数数组a,以第0元素的值为界,把小于或等于第0元素的元素排在数组下标较低位置,大于第0元素的元素排在下标较高位置,第0元素则再两元素的中间。整数均在正常范围。
【输入形式】
输入包含两行。
第一行输入一个整数n(n<=106),
第二行依次输入n个整数,整数之间用空格隔开,整数的大小不超过106。
【输出形式】
输出调换顺序后的整数数组,每两个元素之间用空格隔开。注意最后一个元素之后没有空格。
【样例输入】
10 4 11 2 6 23 1 88 34 7 8
【样例输出】
2 1 4 11 6 23 88 34 7 8
【样例说明】
输入10个数,第0元素是 4, 则将小于或等于4的元素(2, 1)按序排到左端; 4放在第2位置;将比4大的元素(11,6,23,88,34,7,8)按序排在右端;
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
cin >> a[i];
int target[n];
int count = 0;
for (int i = 1; i < n; i ++) {
if (a[i] <= a[0]) {
target[count] = a[i];
count ++;
}
}
target[count++] = a[0];
for(int i=1;i<n;i++)
{
if(a[i]>a[0])
{
target[count]=a[i];
count++;
}
}
for (int i = 0; i < n; i ++) {
if (i == 0) {
cout << target[i];
} else {
cout << " " << target[i];
}
}
}