首页 > 代码库 > 调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面
1.维护两个指针,一个指向第一个 ,向右移动,一个指向最后一个元素,向左移动。当第一个指针指向为偶数,第二个为奇数,就进行交换并移动指针。
注意:当输入为Null或者length=0时候的情况。
#include "stdafx.h" #include <iostream> using namespace std; void Recorder(int s[],int length) //自动退化为指针 { if(s==NULL||length==0) return; int *pBegin=s; int *pEnd=s+length-1; while (pBegin<pEnd) { //if((*pBegin)%2!=0) if((*pBegin&0x1)!=0) //和0x1 做&运算,相当于让被除数的个位与1做&运算,只有个位才能决定该数是否是偶数或者奇数 pBegin++; if((*pEnd&0x1)==0) pEnd--; if ((*pBegin&0x1)==0&&(*pEnd&0x1)!=0&&(pBegin<pEnd)) { swap(*pBegin,*pEnd); pBegin++; pEnd--; } } } int main(int argc, char* argv[]) { int s[]={1,2,3,4,5}; Recorder(s,5); for (int i=0;i<5;i++) cout<<s[i]<<" "; cout<<endl; return 0; }
说明:
此方法还可以解:
被3整除、正负数等问题。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。