题目:
设计算法在O(n)时间内将数组A[1..n]划分为左右两个部分,使得左边的所有元素为奇数,右边的所有为偶数,要求所使用的辅助存储空间大小为O(1).
程序:
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int main(){
vector<int> array;
int temp;
while(cin>>temp) array.push_back(temp);
for(int i=0,j=array.size()-1;i<j;++i,--j){
while(array[i]%2){
if(i==j)break;
++i;
}
while(!(array[j]%2)){
if(i==j)break;
--j;
}
int t=array[i];
array[i]=array[j];
array[j]=t;
}
for(int i=0;i<array.size();++i)cout<<array[i]<<' ';
char pause;
cin>>pause;
return 0;
}