您的位置:首页 > 其它

转换数组使奇数位为奇数 偶数位为偶数

2016-01-17 13:48 211 查看
设定 odd even两个标志位为odd为1,even为0,然后从最后一位开始看,如果说最后一位为偶数,就和even位交换,even自增2,如果是奇数,则和odd位交换,odd自增2,一直到二者其中一个越界位置。 解法比较奇特。

#include<iostream>
#include <hash_map>
#include <algorithm>
using namespace std;
//改变数组,令其奇数位置存储奇数,偶数位置存储偶数
//要求空间复杂度为O(1),时间复杂度为O(n)
int a[]={9,6,5,4,3,2,1,8};
void ChangeArray(int len)
{
int end=a[len-1];
int even=0;
int odd=1;
while(even<len&&odd<len)
{
if(a[len-1]%2==0)
{
std::swap(a[len-1],even);
even+=2;
}
else
{
std::swap(a[len-1],odd);
odd+=2;
}
}

}

int main()
{
ChangeArray(8);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: