ACM——快速排序法


快速排序

時間限制(普通/Java):1000MS/3000MS          運行內存限制:65536KByte
總提交:653            測試通過:297

描述

 

給定輸入排序元素數目n和相應的n個元素,寫出程序,利用內排序算法中快速排序算法進行排序,並輸出排序最后結果的相應序列。

 

輸入

 

共兩行,第一行給出排序元素數目n,第二行給出n個元素,1≤n≤100000,每個元素值范圍為 [0,100000)

 

輸出

 

一行,輸出排序結果。

 

樣例輸入

7
48 36 68 72 12 48 2

樣例輸出

2 12 36 48 48 68 72

提示

 數據結構A實驗四

題目來源

CHENZ

 

//快速排序
#include<iostream>
using namespace std;
int* l;
void Swap(int &a,int &b)
{
    int temp=a;
    a=b;
    b=temp;
}

int Partition(int left,int right)
{
    int i=left,j=right+1;
    do
    {
        do i++;while(l[i]<l[left]);
        do j--;while(l[j]>l[left]);
        if(i<j) Swap(l[i],l[j]);
    }while(i<j);
    Swap(l[left],l[j]);
    return j;
}

void QuickSort(int left,int right)
{
    if(left<right)
    {
        int j=Partition(left,right);
        QuickSort(left,j-1);
        QuickSort(j+1,right);
    }
}
int main()
{
    int N,i;
    cin>>N;
    l=new int[N];
    for(i=0;i<N;i++)
        cin>>l[i];
    QuickSort(0,N-1);
    for(i=0;i<N;i++)
    {
        cout<<l[i];
        if(i<N-1) cout<<" ";//此處oj格式要求
    }
    return 0;
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM