美文网首页
标准的C++实现快排

标准的C++实现快排

作者: 希望是水户洋平 | 来源:发表于2020-08-16 22:47 被阅读0次

以下这样写法的编程框架要清晰很多,可以当标准解法来用。

#include <iostream>
#include <vector>
using namespace std;

class Solution {
public:

    void swap(int* a, int* b) {
        int t = *a;
        *a = *b;
        *b = t;
    }


    int partition(std::vector<int>& v, int low, int hight) {
        int pivot = v[hight];
        int i = low;

        for (int j = low ; j <= hight - 1; ++j)  //注意这里的<=边界条件!
        {
            if (v[j] < pivot) {
                
                swap(&v[i], &v[j]);
                ++i;
            }
        }

        swap(&v[i], &v[hight]);

        return i;

    }

    void quick_sort(std::vector<int>& v, int low, int hight) {
        if (low < hight) {

            int q = partition(v, low, hight);
            quick_sort(v, low, q - 1);
            quick_sort(v, q + 1, hight);
        }

    }

};

int main() {
    Solution so;

    vector<int> test = { 9, 7, 18, -1, 5, 3, 0 };

    int length = test.size();

    so.quick_sort(test, 0, length - 1);

    for (auto e : test) {
        cout << " " << e;
    }



    return 0;
}


相关文章

  • 标准的C++实现快排

    以下这样写法的编程框架要清晰很多,可以当标准解法来用。

  • 快排c++实现

    ``` hello ``` int div_sub_arr(int arr[], int left, int ri...

  • Sort函数

    目的:通过了解Sort函数的实现过程,复习学过的快排,堆排,插入排序。 Sort函数是C++自带的库函数。需要头文...

  • 快速排序算法

    引言 快速排序是应用最广泛的排序算法(C++中的sort函数内部就是快排),优点是实现简单,速度快(时间复杂度Nl...

  • 转载:快排实现

    快速排序(Quicksort) 基本思想:(分治) 先从数列中取出一个数作为key值; 将比这个数小的数全部放在它...

  • js实现快排

    function quick_sort(list, start, end) {if (start < end) {...

  • 快排递归实现

    基本思想:(分治) 先从数列中取出一个数作为key值;将比这个数小的数全部放在它的左边,大于或等于它的数全部放在它...

  • 快排Java实现

    1、快排的核心思想: 1、从无序的数组中找到一个枢轴元素M,将数组一分为二:如将数组的第一个元素设置为枢轴元素。2...

  • Javascript和快速排序

    Javascript和快速排序 这里以递归为例,参考自慕课网刘波波老师的C++版本实现 普通快排 上过大学数据结构...

  • 快排的swift实现

    目前看到的最容易理解的快排实现方法(swift版本) 快排的时间复杂度是O(nlogn),空间复杂度是O(logn)

网友评论

      本文标题:标准的C++实现快排

      本文链接:https://www.haomeiwen.com/subject/gfoxjktx.html