调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。
还是利用两个量从两边扫....代码如下:
//调整数组顺序使奇数位于偶数前面 #include<iostream> using namespace std; void make_order( int data[], int len){ if (len<=0 || data==NULL) return ; else { int begin=0,end=len-1; while (begin!=end){ if ((data[begin]&1)!=0){ //&优先级低于!= begin++; continue ; } if ((data[end]&1)==0){ end--; continue ; } int temp=data[begin]; data[begin]=data[end]; data[end]=temp; } } } int main( void ){ int a[]={3,4,5,6,7,8,9,10,1,2}; for ( int i=0;i<=9;i++) cout<<a[i]<< " " ; cout<<endl; make_order(a,10); for ( int i=0;i<=9;i++) cout<<a[i]<< " " ; cout<<endl; system ( "pause" ); return 0; } |