快排模板


快排模板

  1. 定義兩個指針,左指針從左邊界開始,右指針從右邊界開始
  2. 左指針指向的數小於x,左指針向右移動,直到指向的數大於等於x
  3. 右指針指向的數大於x, 右指針向左移動,直到指向的數小於等於x
  4. 交換兩個數,繼續循環
  5. 直到兩個指針相等
void quick_sort(int a[], int l, int r) {
    if (l >= r) {
        return;
    }
    int i = l - 1, j = r + 1, x = a[l + r >> 1];
    while (i < j) {
        do i ++ ; while(a[i] < x);
        do j -- ; while(a[j] > x);
        if (i < j) {
            swap(a[i], a[j]);
        }
    }
    quick_sort(a, l, j);
    quick_sort(a, j + 1, r);
}


免責聲明!

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



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