设任意n个整数存放于数组A[1..n]中,试编写算法,将所有正数排在所有负数前面(要求算法时间复杂度为O(n))
#include<stdio.h>
void Arrange(int A[],int n)
// n个整数存于数组A中,本算法将数组中所有正数排在所有负数的前面
{
int i=0,j=n-1,x;
while(i<j)
{
while(i<j && A[i]>0)
i++;
while(i<j && A[j]<0)
j--;
if(i<j)
{
x=A[i];
A[i++]=A[j];
A[j--]=x;
//变换A[i]与A[j]
}
}
}
int main()
{
int A[10],i;
printf("请输入5个数:\n");
for(i=0;i<5;i++)
scanf("%d",&A[i]);
Arrange(A,5);
for(i=0;i<5;i++)
printf("%d ",A[i]);
return 0;
}