把一个数组划分成左边奇数右边偶数
题目要求:把一个数组分成左边奇数右边偶数。要求效率尽量高。
代码如下:
#include <iostream>
using namespace std;
/*两数交换函数*/
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
/*划分函数*/
void partition_odd_even(int a[], int count){
int low = 0;
int high = count -1;
while(low <= high){
while(a[low] % 2 == 1)
low++;
while(a[high] % 2 == 0)
high--;
swap(a[low],a[high]);
low++;
high--;
}
}
/*打印数组函数*/
void printarray(int a[], int count){
for(int i =0; i < count; i++){
cout<<a[i]<<" ";
}
}
int main(){
int array[] = {1,2,3,4,5,6,7,8};
int count = sizeof(array)/sizeof(int);
printarray(array,count);
partition_odd_even(array,count);
cout<<endl;
printarray(array,count);
return 0;
}