SDUT OJ 数据结构实验之排序一:一趟快排

数据结构实验之排序一:一趟快排

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

给定N个长整型范围内的整数,要求输出以给定数据中第一个数为枢轴进行一趟快速排序之后的结果。

 

Input

连续输入多组数据,每组输入数据第一行给出正整数N(N < = 10^5),随后给出N个长整型范围内的整数,数字间以空格分隔。

Output

输出一趟快速排序后的结果,数字间以一个空格间隔,行末不得有多余空格。

Sample Input

8
49 38 65 97 76 13 27 49

Sample Output

27 38 13 49 76 97 65 49

 

#include <stdio.h>
#include <stdlib.h>


#define N 100100

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF){
        long long key,a[N];
        int  i, j;
        for(i=0; i<n; i++){
            scanf("%lld",&a[i]);
        }
        i=0;
        j=n-1;
        key=a[i];
        while(i<j){
            while(a[j]>=key&&i<j)
                j--;
                a[i]=a[j];

            while(a[i]<=key&&i<j)
                i++;
                a[j]=a[i];


        }


        a[i]=key;
        for(i=0; i<n-1; i++){
            printf("%lld ",a[i]);
        }printf("%lld\n",a[n-1]);

    }
    return 0;
}


posted @ 2018-04-09 19:40  Gaojinman  阅读(162)  评论(0)    收藏  举报