题目:数组A,2*n个元素,n个奇数、n个偶数,设计一个算法,使得数组奇数下标位置放置的都是奇数,偶数下标位置放置的都是偶数
算法:
/**
*是否是偶数
*/
bool IsEvent( int num )
{
return (num % 2 == 0);
}
/**
*是否是奇数
*/
bool IsOdd( int num )
{
return (num % 2 == 1);
}
/**
*算法内容
*/
bool OddEvent(int *a, int size)
{
if( !IsEvent( size ) ) return false;
int event_index = 0; //偶数下标
int odd_index = 1; //奇数下标
while(event_index <= size - 2 && odd_index <= size - 1)
{
while( IsEvent( a[event_index] ) ) event_index+=2;
while( IsOdd( a[odd_index] ) ) odd_index+=2;
if(event_index <= size - 2 && odd_index <= size - 1)
{
int tmp = a[event_index];
a[event_index] = a[odd_index];
a[odd_index] = tmp;
event_index += 2;
odd_index += 2;
}
}
return true;
}
测试用例:
#include <iostream>
#include <cstdlib>
/**
*随机[begin, end]区间的整型数
*/
int Random( int begin, int end)
{
retur