54.调整数组顺序使奇数位于偶数前面(数组)。

原创 2012年03月30日 17:30:50
54.调整数组顺序使奇数位于偶数前面(数组)。


题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,

所有偶数位于数组的后半部分。要求时间复杂度为O(n)。


//coder:LEE 20120330
#include<iostream>
#include<CASSERT>
#include<vector>
using namespace std;
void Swap(int *a,int *b)
{
	int t;
	t=*a;
	*a=*b;
	*b=t;
}
void AdjustSequence(int *A,int n)
{
	int behind=-1;
	for (int i=0;i<n;i++)
	{
		if(A[i]%2==1)
		{
			behind++;
			Swap(&A[behind],&A[i]);
		}
	}
}
bool IsEven(int n)
{
	if((n&1)==0)
		return true;
	else
		return false;
}
void AdjustSequence(int *A,unsigned int nLen,bool (*func)(int))
{
	assert(A!=NULL&&nLen>0&&func!=NULL);
	unsigned int behind=0;
	unsigned int front=nLen-1;
	
	while(behind<front)
	{
		if(!func(A[behind]))
		{
			behind++;
			continue;
		}
		if (func(A[front]))
		{
			front--;
			continue;
		}
		Swap(&A[behind],&A[front]);
	}

}
int main()
{
	int A[]={2,5,3,4,9,6};
	int nLen=sizeof(A)/sizeof(int);
	AdjustSequence(A,nLen,IsEven);
	for (int i=0;i<nLen;i++)
	{
		cout<<A[i];
	}
	return 0;
}


牛客网刷题之调整数组顺序使奇数位于偶数前面

题目描述:解题思路:  如果是强解的话,就可以从头扫描这个数组,每碰到一个偶数时,拿出这个数字,并把位于这个数字后面的所有数字都往前挪动一位,这种解法显然是O(n^2)的,不用想都知道,这不可能通过测...
  • lks1139230294
  • lks1139230294
  • 2016年10月08日 23:01
  • 670

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

一、问题描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 二、算法...
  • tanjie_123
  • tanjie_123
  • 2016年11月06日 18:52
  • 928

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

题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。 方法:设2个头尾指针begin和end, begin...
  • fanzitao
  • fanzitao
  • 2012年08月24日 09:03
  • 2866

JAVA实现调整数组顺序使奇数位于偶数前面问题(《剑指 offer》)

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 pu...
  • qq_15062527
  • qq_15062527
  • 2015年10月02日 15:57
  • 1094

剑指offer面试题14(Java版):调整数组顺序使奇数位于偶数的前面

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 1、基本实现: 如果不考虑时间复杂度,最简单的思路应该是从头扫描这个数组,...
  • jsqfengbao
  • jsqfengbao
  • 2015年08月01日 12:41
  • 3548

将无序数组中的奇数放在偶数前面

package test; import java.util.Arrays; public class Test2 { //类似快速排序 static void change(int[] a...
  • kangaroo835127729
  • kangaroo835127729
  • 2015年03月10日 20:51
  • 692

经典算法——调整数组顺序使奇数位于偶数前面

一、题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 ...
  • geekmanong
  • geekmanong
  • 2016年03月19日 15:42
  • 1372

调整数组顺序使奇数位于偶数前面[剑指offer]之python实现

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题目连接时空都是O(...
  • huaxixidongbeishida
  • huaxixidongbeishida
  • 2016年10月18日 10:16
  • 468

【c语言】调整数组使奇数全部都位于偶数前面

// 调整数组使奇数全部都位于偶数前面 // 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, // 所有偶数位于数组的后半部分。 #inclu...
  • zhaoyaqian552
  • zhaoyaqian552
  • 2015年07月08日 09:30
  • 897

剑指offer 面试题14:调整数组顺序使奇数位于偶数前面(C++版)

题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。 思路分析: 可以维护两个指针i和j,i指向数组的第一个数字,它只向后移...
  • Mary19920410
  • Mary19920410
  • 2017年04月12日 10:55
  • 242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:54.调整数组顺序使奇数位于偶数前面(数组)。
举报原因:
原因补充:

(最多只允许输入30个字)