题目描述
已知数组A[1..n]的元素类型为整型,设计算法调整A,使其左边的所有元素小于零,右边的所有元素大于等于零。(要求算法的时间复杂度和空间复杂度均为0(n))
输入
数组大小
数组中个元素
输出
排列后的数组元素
样例输入
5
5 6 -1 5 1
5
3 3 -1 -1 2
样例输出
-1 5 6 5 1
-1 -1 3 3 2
参考代码
#include<stdio.h>
int main()
{
int i,j,a[20],n,k,t=0;
while(scanf("%d",&n)!=EOF)
{
if(t==0)
{
n=n-1;
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
} else
for (i=1;i<=n;i++)
scanf("%d",&a[i]);
j=1;
while(a[j]<0)
j++;
for (j+=1;j<=n;j++)
if(a[j]<0)
{
a[0]=a[j];
for (k=j-1;k>=1;k--)
if(a[k]>0)
{
a[k+1]=a[k];
i=k;
}
a[i]=a[0];
}
for (i=1;i<=n;i++)
{
printf("%d",a[i]);
if(i!=n)
printf(" "); else
printf("n");
}
t++;
}
return 0;
}
解析
暂无