题目描述
给定一个长度不小于2的数组arr,实现一个函数调整arr,要么让所有的偶数下标都是偶数,要么让所有的奇数下标都是奇数
注意:1、数组下标从0开始!
2、本题有special judge,你可以输出任意一组合法解!同时可以证明解一定存在
[要求]
时间复杂度为O(n)O(n),额外空间复杂度为O(1)O(1)
#include<iostream>
#include<vector>
using namespace std;
void swap(vector<int>& arr, int index1, int index2){
int tmp = arr[index1];
arr[index1]=arr[index2];
arr[index2]=tmp;
}
void sortByIndexOddAndEven(vector<int> &arr, int n){
if(arr.empty() || n<2){
return;
}
int even=0;
int odd=1;
int end=n-1;
while(even<=end && odd<=end){
if((arr[end] & 1) == 0){//表示为偶数
swap(arr, end, even);
even+=2;
}else{
swap(arr, odd, end);
odd+=2;
}
}
return;
}
int main(){