将数组中元素排列为奇数在前偶数在后
2016-03-31 11:58
267 查看
处理策略是定义两个指针pHead,pTail并令其初始指向数组头节点和尾节点。pHead从前往后找应该放在尾部的偶数节点,pTail从后往前找应该放在头部的奇数节点,若pHead位于pTail之前则交换二者内容,否则结束处理过程。
处理流程如下图所示。
对于用例: 1,2,4,5,3
处理结果为:1,3,5,4,2
下面给出在java语言下的实现:
private void jiOu(int a[]) //将数组a中奇数放在前面,偶数放在后面
{
int len = a.length;
if(len <= 0) //数组长度为0则返回
return ;
int front = 0, end = len-1;//设置两个指针,一个指向头部,一个指向尾部
while(front<end)
{
while(front<len && (a[front]&1)==1) //从前往后找偶数
front++;
while(end>=0 && (a[end]&1)==0) //从后往前找奇数
end--;
if(front<end)
{
int swap = a[front]; //将奇数往前挪,偶数往后挪
a[front] = a[end];
a[end] = swap;
}
}
}
处理流程如下图所示。
对于用例: 1,2,4,5,3
处理结果为:1,3,5,4,2
下面给出在java语言下的实现:
private void jiOu(int a[]) //将数组a中奇数放在前面,偶数放在后面
{
int len = a.length;
if(len <= 0) //数组长度为0则返回
return ;
int front = 0, end = len-1;//设置两个指针,一个指向头部,一个指向尾部
while(front<end)
{
while(front<len && (a[front]&1)==1) //从前往后找偶数
front++;
while(end>=0 && (a[end]&1)==0) //从后往前找奇数
end--;
if(front<end)
{
int swap = a[front]; //将奇数往前挪,偶数往后挪
a[front] = a[end];
a[end] = swap;
}
}
}
相关文章推荐
- 申请老男孩教育培训组长职务
- Java微信公众平台开发(十)——微信自定义菜单的创建实现
- Java - 经典代码题
- Hibernate持久
- Firefox29.0.1增量导入书签(合并书签)
- iOS之富文本
- EasyDarwin不能保存HLS列表的解决方案
- 数据库的隔离级别 【转】
- 去掉导航栏的线
- 信号未决与阻塞(二)
- iOS开发--动画篇之layout动画深入
- Java Method的invoke简单理解
- TextView设置单个字体变化
- Java微信公众平台开发(九)——关键字回复以及客服接口实现(该公众号暂时无法提供服务解决方案)
- segementControl相关
- 集合(二)
- 二叉搜索树
- 解决CATextLayer绘制出来的字体模糊问题
- [Unity3d插件KGFMapSystem]非常不错的小地图的制作
- jQuery 的选择器