求大神给写一段代码
将n个正整数存放于一个一维数组a中,试设计一个算法,将所有的奇数移动并存放于数组的前半部分,将所有的偶数移动并存放于数组的后半部分,要求尽可能少地使用临时存储单元,并使计算时间达到O(n)。
2012-11-23 12:30
2012-11-23 12:30

2012-11-23 15:37
2012-11-23 15:40
2012-11-23 17:04
程序代码:#include<stdio.h>
#define N 100
void sort(int a[N],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main()
{
int n,i,j,k;
int m,p;
int a[N];
int b[N],c[N];
printf("please input the nubers of the arrry!\n");
scanf("%d",&n);
printf("input the arry!\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
printf("the orginal arry is \n");
for(i=0;i<n;i++)
printf("%d ",a[i]);
putchar(10);
i=0;
j=0;k=0;
while(i<n)
{
if(a[i]%2!=0)
b[j++]=a[i++];
else
c[k++]=a[i++];
}
sort(b,j);//奇数排序
sort(c,k);//偶数排序
i=0;
m=0;p=0;
if(i<n)
{
while(m<j)
{
a[i++]=b[m++];
}
while(p<k)
{
a[i++]=c[p++];
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
putchar(10);
return 0;
}
保证运行~~·不知道你的尽量少的用存储空间是啥意思啊,有没有具体点的要求。 西点复试的时候出过这道题,看到这道题很亲切啦~~

2012-11-23 19:57
2012-11-24 20:57