描述:
已知线性表(a1 a2 a3 …an)按顺序存于内存,每个元素都是整数,试设计用最少时间把所有值为负数的元素移到全部正数值元素前边的算法:
例:(x,-x,-x,x,x,-x …x)变为(-x,-x,-x…x,x,x)。
输入:
第一行输入顺序表长度 n
第二行输入 n 个元素
输出:
输出移动后的顺序表元素
输入样例
6
1 2 3 -4 -5 -6
输出样例
-4 -5 -6 1 2 3
Code:
#include "stdio.h"
#include "stdlib.h"
void sort(int *A,int n)
{
int i,j,temp;
temp=i=j=0;
int *a,*b;
a=(int *) malloc(n*sizeof (int));
b=(int *) malloc(n*sizeof (int));
while(i+j<n)
{
if(A[temp]>=0)
{
a[i++]=A[temp];
}
else
{
b[j++]=A[temp];
}
temp++;
}
temp=0;
while (temp<j)
{
printf("%d ",b[temp++]);
}
temp=0;
while (temp<i)
{
printf("%d ",a[temp++]);
}
}
int main() {
int *A,size,i=0;
scanf("%d",&size);
A=(int *) malloc(size*sizeof (int));
while (i < size)
{
scanf("%d",&A[i]);
i++;
}
sort(A, size);
free(A);
return 0;
}