给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题

题目:给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。

       要求:空间复杂度O(1),时间复杂度为O(n)。

  我自己写了一下(之前写的那个不对,现在重写了,时间复杂度达到O(n))   

void swap(int *a,int i,int j)
{
	int tmp;
	tmp=a[i];
	a[i]=a[j];
	a[j]=tmp;
}

void AdustArray(int *a,int n)
{
	int i=0,j=n-1;
	while(i


 

以下是测试代码

void main()  
{ 
	int a[10]={1,2,3,4,5,6,7,8,9,0};
	AdustArray(a,10);
	for(int i=0;i<10;i++)
		cout<
测试1:(第一个数为奇数)
 

给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题_第1张图片

测试2:(第一个数为偶数)

给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题_第2张图片

注:因为题目未要求排序,所以结果看起来可能比较别扭

你可能感兴趣的:(笔试/面试题)