9、用时间最短的方法将负数全部排在正数前面。比如:-4 -6 -3 -2 -1 0 0 4 3 2

/*
用时间最短的方法将负数全部排在正数前面。比如:-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;
}

posted @ 2021-09-22 21:16  叶梓渔  阅读(203)  评论(0)    收藏  举报