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


    1.维护两个指针,一个指向第一个 ,向右移动,一个指向最后一个元素,向左移动。当第一个指针指向为偶数,第二个为奇数,就进行交换并移动指针。

      注意:当输入为Null或者length=0时候的情况。

    #include "stdafx.h"
    #include <iostream>
    using namespace std;
    
    
    void Recorder(int s[],int length)  //自动退化为指针
    {
        if(s==NULL||length==0)
            return;
        int *pBegin=s;
        int *pEnd=s+length-1;
        while (pBegin<pEnd)
        {
            //if((*pBegin)%2!=0)
            if((*pBegin&0x1)!=0)    //和0x1 做&运算,相当于让被除数的个位与1做&运算,只有个位才能决定该数是否是偶数或者奇数
                pBegin++;
            if((*pEnd&0x1)==0)
                pEnd--;
            if ((*pBegin&0x1)==0&&(*pEnd&0x1)!=0&&(pBegin<pEnd))
            {
                swap(*pBegin,*pEnd);
                pBegin++;
                pEnd--;
            }
        }
    }
    
    int main(int argc, char* argv[])
    {
        int s[]={1,2,3,4,5};
        Recorder(s,5);
        for (int i=0;i<5;i++)
            cout<<s[i]<<"  ";
        cout<<endl;
        return 0;
    }

     说明:

    此方法还可以解:

     被3整除、正负数等问题。

  • 相关阅读:
    第二阶段冲刺第二天
    第二阶段冲刺第一天
    学习进度表_十四周
    购买图书
    学习进度表_十三周
    寻找水王续
    学习进度表_十二周
    《梦断代码》读后笔记_4
    找水王
    学习进度表_十一周
  • 原文地址:https://www.cnblogs.com/menghuizuotian/p/3776934.html
Copyright © 2020-2023  润新知