现在的位置: 首页 > 综合 > 正文

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

2018年01月19日 ⁄ 综合 ⁄ 共 775字 ⁄ 字号 评论关闭

54.调整数组顺序使奇数位于偶数前面。
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。

/*
54.调整数组顺序使奇数位于偶数前面。
题目:输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,
所有偶数位于数组的后半部分。要求时间复杂度为 O(n)。
*/
#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;
}

抱歉!评论已关闭.