牛骨文教育服务平台(让学习变的简单)
博文笔记

将数组中元素排列为奇数在前偶数在后

创建时间:2016-03-31 投稿人: 浏览次数:160

    处理策略是定义两个指针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;
			}
		}
	}





声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。