给定一个长度不小于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; }