快速排序算法的基本原理

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
using namespace std;

vector<int> arr = {3,4,8,1,2,3};
void quicksort(int l ,int r) {
    if(l>=r) return;
    int i = l-1,j = r+1;
    int pivot = arr[(i+j)/2];
    while(i<j) {
        do ++i; while(i<=r && arr[i] <pivot );
        do --j;  while(j>=l && arr[j] > pivot);

        if(i<j) {
            swap(arr[i],arr[j]);
        }
    }
    quicksort(l,j);
    quicksort(j+1,r);
}


int main(void) {

    quicksort(0,arr.size()-1);
    for(int x:  arr) {
        cout << x <<endl;
    }

    return 0;
}