码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-27 12:55:58      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:调整数组顺序   c++;面试题目   

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,偶数位于后半部分。时间复杂度尽量低。

分析:我们可以用两个指针,第一个指针初始化时指向数组的第一个数字,它只向后移动;第二个指针初始化时指向数组的最后一个数字,它只向前移动。两个指针相遇之前,第一个指针总是位于第二个指针的前面。如果第一个指针指向的数字是偶数,并且第二个指针指向的是奇数,我们就交换这两个数字。实现代码如下:

void ReorderOddEven(int* pData,unsigned int length)
{
    if(pData==NULL||length==0)
        return;
        
    int *pBegin=pData;
    int *pEnd=pData+length-1;
    
    while(pBegin<pEnd)
    {
        while(pBegin<pEnd&&(*pBegin&0x1)!=0)
            pBegin++;
        while(pBegin<pEnd&&(*pBegin&0x1)==0)
            pEnd--;
            
        if(pBegin<pEnd)
        {
            int temp=*pBegin;
            *pBegin=*pEnd;
            *pEnd=temp;
        }
    }
}


本文出自 “仙路千叠惊尘梦” 博客,请务必保留此出处http://secondscript.blog.51cto.com/9370042/1583092

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

标签:调整数组顺序   c++;面试题目   

原文地址:http://secondscript.blog.51cto.com/9370042/1583092

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!