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);
    }
    
    
  • 相关阅读:
    洛谷5495:Dirichlet前缀和
    SP5971 LCMSUM
    洛谷1829:crash的数字表格
    洛谷3172:选数
    Codeforces 1295 D. Same GCDs
    洛谷3768:简单的数学题
    NTT学习笔记
    洛谷1169:棋盘制作(悬线法)
    洛谷2444:病毒
    后缀自动机
  • 原文地址:https://www.cnblogs.com/songdanzju/p/7442041.html
Copyright © 2011-2022 走看看