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

来源:互联网 发布:淘宝的促销活动有哪些 编辑:程序博客网 时间:2024/04/30 00:04

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

思路:快排缩略算法 注意提高可扩展性

代码:

#include<iostream>using namespace std;void Reorder(int *pData,unsigned int length,bool (*func)(int)){if(pData==NULL||length==0) return;int *pBegin=pData;int *pEnd=pData+length-1;while(pBegin<pEnd){while(pBegin<pEnd&&!func(*pBegin)) pBegin++;while(pBegin<pEnd&&func(*pEnd)) pEnd--;if(pBegin<pEnd){int temp=*pBegin;*pBegin=*pEnd;*pEnd=temp;}}}bool isEven(int n){return (n&1)==0;}void ReorderOddEven(int *pData,unsigned int length){Reorder(pData,length,isEven);}void prt(int *data,int length){int i;for(i=0;i<length;i++){cout<<data[i]<<" ";}cout<<endl;}int main(){int data[]={1,2,3,4,5};cout<<"before sort"<<endl;prt(data,5);ReorderOddEven(data,5);cout<<"after sort"<<endl;prt(data,5);return 0;}

reference:剑指offer(何海涛著)

0 0
原创粉丝点击