给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数
注意:1、数组下标从0开始!
2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在
[要求]
时间复杂度为
,额外空间复杂度为
第一行一个整数N。表示数组长度
接下来一行N个整数表示数组内的数
输出N个整数。表示调整后的数组
5 1 2 3 4 5
2 1 4 3 5
样例中的输出保证了奇数下标都是奇数
#include <stdio.h>
#include <stdlib.h>
void swap(int *arr, int i, int j) {
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
int main(void) {
int n, *arr;
scanf("%d", &n);
arr = (int *) malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", arr + i);
}
int even = 0, odd = 1;
while (even < n && odd < n) {
if (arr[n - 1] & 1) {
swap(arr, odd, n - 1);
odd += 2;
} else {
swap(arr, even, n - 1);
even += 2;
}
}
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}