快排算法


給定你一個長度為 n 的整數數列。

請你使用快速排序對這個數列按照從小到大進行排序。

並將排好序的數列按順序輸出。

輸入格式

輸入共兩行,第一行包含整數 n。

第二行包含 n個整數(所有整數均在 1 ~10^9 范圍內),表示整個數列。

輸出格式

輸出共一行,包含 n個整數,表示排好序的數列。

數據范圍

1  ~ 100000

輸入樣例:

5
3 1 2 4 5\

輸出樣例:

1 2 3 4 5

 1 #include<iostream>
 2 using namespace std;
 3 
 4 const int N = 1e6+10;
 5 int q[N];
 6 
 7 void quick_sort(int q[],int l,int r){
 8     if(l>=r) return;
 9     
10     int i=l-1,j=r+1,x=q[l+r>>1];
11     while(i<j){
12         do i++;while(q[i]<x);
13         do j--;while(q[j]>x);
14         if(i<j) swap(q[i],q[j]);
15     }
16     
17     quick_sort(q,l,j);
18     quick_sort(q,j+1,r);
19 }
20 
21 int main(){
22     int n;
23     scanf("%d",&n);
24     for(int i=0;i<n;i++) scanf("%d",&q[i]);
25     quick_sort(q,0,n-1);
26     for(int i=0;i<n;i++) printf("%d ",q[i]);
27 }

 


免責聲明!

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



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