您的位置:首页 > 其它

160 重新排列数组使得数组左边为奇数,右边为偶数

2014-11-11 17:06 260 查看
60、百度笔试题

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


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

/*
60、百度笔试题
给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度 O(1),时间复杂度为 O(n)。

so easy 快速排序partition的思想 同54题 
*/
#include<iostream>
#include<stdio.h>
using namespace std;

void swap(int *a,int *b)
{
	int t;  
    t=*a;  
    *a=*b;  
    *b=t; 
}

void adjust(int *a,int n)
{
	int i,j;
	
	i=0;j=0;
	while(i<n)
	{
		if(a[i]%2==1)//奇数交换 
		{
			swap(&a[i],&a[j]); 
			j++;
		}
		i++;
	}	
}

int main()
{
	int a[]={1,2,3,4,5,6,7,8,9};
	int b[]={1,1,3,4,6,6,6,5,5,7,8,8,9,9};
	int len,i;
	len=sizeof(a)/sizeof(int);

	for(i=0;i<len;i++)
		printf("%d",a[i]);
	printf("\n");
	adjust(a,len);//变换 
	for(i=0;i<len;i++)
		printf("%d",a[i]);
	printf("\n");
	
	printf("*****************\n");
	
	len=sizeof(b)/sizeof(int);
	for(i=0;i<len;i++)
		printf("%d",b[i]);
	printf("\n");
	adjust(b,len);//变换 
	for(i=0;i<len;i++)
		printf("%d",b[i]);
	printf("\n");
	
	return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐