1. 程式人生 > >資料結構實驗之排序一:一趟快排__Sort

資料結構實驗之排序一:一趟快排__Sort

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

AC程式碼:

#include<bits/stdc++.h>
using namespace std;
int a[100001];
void Sort(int a[],int l,int r)
{
    int x=a[l],i=l,j=r;
    if(i>=j) return ;
    while(i<j)
    {
        while(i<j&&a[j]>=x) j--;
        a[i]=a[j];
        while(i<j&&a[i]<=x) i++;
        a[j]=a[i];
    }
    a[i]=x;
}
int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=1; i<=n; i++)
        {
            cin>>a[i];
        }
        Sort(a,1,n);
        for(int i=1; i<=n; i++)
        {
            printf(i==n?"%d\n":"%d ",a[i]);
        }
    }
    return 0;
}

————
餘生還請多多指教!