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

将整型数组划分为左右两部分,使左边全为奇数,右边全为偶数.

2013年05月17日 ⁄ 综合 ⁄ 共 758字 ⁄ 字号 评论关闭

原题:已知数组array[1:n-1]的元素类型为int,设计算法将其调整为左右两部分,左边所有元素为奇数,右边所有元素为偶数,并要求算法的时间复杂度为O(n)。
以下程序自动生成数组,然后调用void adjust()函数进行调整。

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 10
void adjust(int array[],int n);	//调整数组元素的函数声明
void main()
{
	int array[SIZE],i;
	srand(time(NULL));		//获取随机种子
	for(i=0;i<SIZE;i++)		//为数组元素赋值,以生成数组
	{
		array[i]=rand()%100+1;
	}
	printf("Before adjust array,the array's elements are:\n");
	for(i=0;i<SIZE;i++)
	{
		printf("%d	",array[i]);
	}
	printf("\n");
	adjust(array,SIZE);	//调用调整数组元素的函数
	printf("After adjust array,the array's elements are:\n");
	for(i=0;i<SIZE;i++)
	{
		printf("%d	",array[i]);
	}
	printf("\n");
}
void adjust(int array[],int n)		//调整数组元素的函数的定义
{
	int i=0,j=n-1,temp;
	while(i<j)
	{
		while(array[i]%2!=0)i++;
		while(array[j]%2==0)j--;
		if(i<j)
		{
			temp=array[i];
			array[i]=array[j];
			array[j]=temp;
		}
	}
}

抱歉!评论已关闭.