调整数组顺序使奇数位于偶数前面

调整数组顺序使奇数位于偶数前面

 

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为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;
}
原文地址:https://www.cnblogs.com/xiao-wei-wei/p/3354888.html