zoukankan      html  css  js  c++  java
  • 奇偶数排序

    输入一个整数数组,对其重新排序,将奇数放在数组前面,偶数放在后面。要求时间复杂度O(n), 空间复杂度O(1)。

    解法一:一头一尾指针往中间扫描

    #include <iostream>
    #include <algorithm>
    using namespace std;
    //判断是否为奇数
    bool isOddNum(int num)
    {
        return (num&1)==1;
    }
    //奇数和偶数互换
    void OddEvenSort(int *pData,int len)
    {
        if(pData==NULL||len<=0)
            return;
        int *pbegin=pData;
        int *pend=pData+len-1;
        while(pbegin<pend)
        {
            //如果pbegin指针指向的是奇数,正常,向右移
            if(isOddNum(*pbegin))
                pbegin++;
            //如果pend指针指向的是偶数,正常,向左移
            else if(!isOddNum(*pend))
                pend--;
            else{
            //否则都不正常,交换
                swap(*pbegin,*pend);
            }
        }
    }
    void print(int a[],int len)
    {
        for(int i=0;i<len;i++)
            cout<<a[i]<<" ";
        cout<<endl;
    }
    int main()
    {
        int a[]={2,56,12,4,9,6,3,9,56,235,77,56};
        int len=sizeof(a)/sizeof(int);
        print(a,len);
        OddEvenSort(a,len);
        print(a,len);
        return 0;
    }
  • 相关阅读:
    Qt中不同类型数据之间的相互转换
    数组传参
    sizeof和strlen区别
    打印字符‘烫’
    vivado hls(1)
    时序约束方法(2)
    FPGA浮点数定点化
    FPGA设计思想与技巧(转载)
    视频采集显示总结
    Verilog code
  • 原文地址:https://www.cnblogs.com/wft1990/p/7062192.html
Copyright © 2011-2022 走看看