zoukankan      html  css  js  c++  java
  • 调整数组顺序使奇数位于偶数前面

    //调整数组顺序使奇数位于偶数前面:
    void reorderOddEven(int* pData, unsigned int length){
        if (pData == nullptr || length <= 0)
            return;
        int* pBegin = pData;
        int* pEnd = pData + length - 1;
        while (pBegin < pEnd){
            while (pBegin != pEnd && (*pBegin & 0x1) == 1){
                pBegin++;
            }
            while (pEnd != pBegin && (*pEnd & 0x1) == 0){
                pEnd--;
            }
            if (pBegin < pBegin){
                int temp = *pBegin;
                *pBegin = *pEnd;
                *pEnd = temp;
            }
        }
    }
    //可扩展性的写法:使用函数指针
    void reorder(int* pData, unsigned int length, bool (*func)(int)){
        if (pData == nullptr || length <= 0)
            return;
        int* pBegin = pData;
        int* pEnd = pData + length - 1;
        while (pBegin < pEnd){
            while (pBegin < pEnd && !func(*pBegin))
                pBegin++;
            while (pEnd > pBegin && func(*pEnd))
                pEnd--;
            if (pBegin < pEnd){
                int temp = *pBegin;
                *pBegin = *pEnd;
                *pEnd = temp;
            }
        }
    }
    bool isEven(int a){
        return (a & 0x1);
    }
    void reorderOddEven(int* pData, unsigned int length){
        reorder(pData, length, isEven);
    }
    
    
  • 相关阅读:
    CPU运行原理
    ucore代码分析
    ThreadLocal是否会导致内存泄露
    2018 多校联合训练 4
    2018 多校联合训练 3
    2018 牛客多校 4
    2018 牛客多校 3
    2018 牛客多校 2
    2018 牛客多校 1
    2018 多校联合训练 2
  • 原文地址:https://www.cnblogs.com/songdanzju/p/7442041.html
Copyright © 2011-2022 走看看