2020-3-30 快速排序思想和实现

快速排序是对于冒泡排序的改进

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int partition(vector<int> &arr, int left, int right) {
    int pivot = arr[left];
    int i = left;
    int j = right;
    while (i < j) {
        while (i < j && arr[j] >= pivot) {
            j--;
        }
        while (i < j && arr[i] <= pivot) {
            i++;
        }
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
    arr[left] = arr[i];
    arr[i] = pivot;
    return i;
}

void quickSort(vector<int> &arr, int left, int right) {
    if (left < right) {
        int mid = partition(arr, left, right);
        quickSort(arr, left, mid - 1);
        quickSort(arr, mid + 1, right);
    }
}

int main()
{
    vector<int>arr = {5, 3, 4, 7, 9, 8, 0, 6};
    quickSort(arr, 0, arr.size() - 1);
    for (auto x : arr) {
        cout << x << ' ';
    }
    system("pause");
    return 0;
}


posted @ 2021-03-30 17:10  shenlei_blog  阅读(46)  评论(0)    收藏  举报