zoukankan      html  css  js  c++  java
  • 算法笔记 --- Quick Sort

    #include <iostream>
    
    using namespace std;
    class QuickSort {
    public:
        int* quickSort(int* A, int n) {
            quickSortRecursive(A, 0, n - 1);
            return A;
        }
        void quickSortRecursive(int* A, int index_beg, int index_end){
            if(index_beg < index_end){
                int median = partition(A, index_beg, index_end);
                quickSortRecursive(A, index_beg, median - 1);
                quickSortRecursive(A, median + 1, index_end);
            }
        }
        int partition(int* A, int index_beg, int index_end){
            int pivot = index_end;
            int tmp, index_partitioned = index_beg;
            for(int index = index_beg; index < index_end; index++){
                if(A[index] <= A[pivot]){
                    tmp = A[index];
                    A[index] = A[index_partitioned];
                    A[index_partitioned] = tmp;
                    // cout<<index<<" is swap to "<<index_partitioned<<endl;
                    // cout<<"index: "<<index<<endl;
                    // cout<<"index_partitioned: "<<index_partitioned<<endl;
                    index_partitioned++;
                    // cout<<"value after swap: "<<endl;
                    // for(int i = index_beg; i <= index_end; i++)
                        // cout<<A[i]<<" ";
                    // cout<<endl;
                }
            }
            tmp = A[pivot];
            A[pivot] = A[index_partitioned];
            A[index_partitioned] = tmp;
            // cout<<"swap povit: ";
            // for(int i = index_beg; i <= index_end; i++)
            //     cout<<A[i]<<" ";
            // cout<<endl;
            return index_partitioned;
        }
    };
    int main()
    {
        int a[6] = {1, 5, 7, 2, 9, 4};
        int* res;
        QuickSort sorter;
        res = sorter.quickSort(a, 6);
        cout<<"after sorting:"<<endl;
        for(int index = 0; index < 6; index ++){
            cout<<res[index]<<" ";
        }
        cout<<endl;
    
        return 0;
    }
  • 相关阅读:
    重构的信号
    枚举类返回Map键值对,绑定到下拉框
    js onclick函数中传字符串参数的问题
    python opencv3 矩形 圆形边框
    python opencv3 轮廓检测
    python opencv3 滤波器 卷积核
    python opencv3 窗口显示摄像头的帧
    python opencv3 显示一张图片
    python opencv3 获取摄像头视频
    python opencv3 视频文件的读写
  • 原文地址:https://www.cnblogs.com/zhongzhiqiang/p/5791088.html
Copyright © 2011-2022 走看看