1. 程式人生 > 其它 >閘道器+BFF模式(Backend For Frontend前端應用開發的後端服務)

閘道器+BFF模式(Backend For Frontend前端應用開發的後端服務)

快速排序即是在一組資料中任取一個數作為基準數,將大於這個數的數放在這個數的右邊,將小於這個數的數放在這個數的左邊,指標 ij 從陣列的左右兩端移動,i 從左向右,j 從右向左。假設以陣列中間的那個數作為基準數 x ,則 i 先向右移動,直到移動到一個大於 x 的數停下來,然後 j 開始向左移動,直到移動到一個小於 x 的數停下來,此時只要 ij 所在地方的數互換位置即可達成大數在右小數在左的效果。此輪交換過後 ij 繼續重複剛才的指令,直到 ij 相遇,第一輪結束。此時以 x 為分界點,x 左邊的數都小於 xx 右邊的數都大於 x。再將 x 左邊和右邊分別看做兩組數繼續重複上述步驟,最終即可將所有數都從小到大排序。

程式碼如下:

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

(剛開始學習演算法,程式碼執行過沒有問題,但解釋的可能會有不對的地方,歡迎大佬指正!)