• QuickSort快速排序 wang


    快速排序(分区排序),是一种平均性能非常好的排序方法,采用了分治的思想,核心思路:

    1.数组分区(引出了“自顶向下”的递归解决方案);

    2.递归求解。

    时间复杂度:O(nlog2n);

    快速排序是一种不稳定的算法。

    QuickSort.h

    #include <iostream>
    #include <vector>
    using namespace std;
    class QuickSort
    {
    private:
    vector<int> list1;
    public:
    QuickSort::QuickSort(vector<int> list2);
    void QuickSort::quick_sort(int i,int j);
    void QuickSort::out();
    };

    QuickSort.cpp

    #include "QuickSort.h"
    #include <vector>
    #include <iostream>
    using namespace std;
    QuickSort::QuickSort(vector<int> list2)
    {
    for(int i = 0 ; i<list2.size(); i++)
    {
    list1.push_back(list2[i]);
    }
    }
    void QuickSort::quick_sort(int left , int right)
    {
    int i=left; //左下标
    int j=right; //右下标
    int provit=list1[left];


    while(i<j && list1[j]>=provit) j--;
    if(i<j )
    {
    int temp=list1[j];
    list1[j]=list1[i];
    list1[i]=temp;
    }
    while(i<j &&list1[i]<=provit) i++;
    if(i<j && list1[i]>provit)
    {
    int temp=list1[j];
    list1[j]=list1[i];
    list1[i]=temp;
    }
    if(i!=left) quick_sort(left , i-1);
    if(j!=right) quick_sort(i+1 , right);
    }

    void QuickSort::out()
    {
    for(int i = 0; i< list1.size() ;i++)
    {
    cout<<list1[i]<<"";
    }
    }
    void main()
    {
    vector <int> list2;
    for (int i = 10; i>0; i--)
    list2.push_back(i);

    QuickSort qs(list2);
    cout<<"Befor sort:"<<endl;
    qs.out();
    cout<<endl;
    cout<<"After sort:"<<endl;
    qs.quick_sort(0,list2.size()-1);
    qs.out();
    getchar();
    }




  • 相关阅读:
    字符串型
    字符型
    实型(浮点型)
    sizeof
    数据类型
    标识符
    Win32汇编
    Win32汇编
    C# 语言程序设计笔记
    鬼泣4:寻找无限生命/剑气/暴怒
  • 原文地址:https://www.cnblogs.com/Turtle/p/2185515.html
Copyright © 2020-2023  润新知