您的位置:首页 > 其它

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

2013-05-31 23:17 337 查看
原题:已知数组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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数组 划分 左边 奇数
相关文章推荐