/*
用时间最短的方法将负数全部排在正数前面。比如:-4 -6 -3 -2 -1 0 0 4 3 2
*/
#include <stdio.h>
#include <stdlib.h>
void negativeBeforePostive(int arra[],int arraLength)
{
int lower = 0;
int higher = arraLength - 1;
while(lower < higher)
{
while(arra[higher] >= 0 && higher > lower)
{
--higher;
}
while(arra[lower] < 0 && lower < higher)
{
++lower;
}
if(lower < higher)
{
int temp = arra[higher];
arra[higher] = arra[lower];
arra[lower] = temp;
higher = higher - 1;
lower = lower + 1;
}
}
}
int main()
{
int arra[12] = {0,-6,2,3,4,0,0,-1,-2,-3,-4,-5};
negativeBeforePostive(arra, 11);
for(int i = 0;i < 10;i++)
printf("%d ",arra[i]);
return 0;
}