#H33. 【拓展题】三路快速排序

【拓展题】三路快速排序

Background

三路快速排序的实现

Description

完成下述三路快速代码框架后提交,只需完成注释中的要求,无需输入输出

#include "ThreeWayQuickSort.h"

void ThreeWayQuickSort::three_way_quick_sort(std::vector<int>& nums, int p, int q) {
    // 请在这里完成你的代码

}
void ThreeWayQuickSort::mysort(std::vector<int>& nums) {
    if(nums.size() == 0) 
      return;
    three_way_quick_sort(nums, 0, nums.size() - 1);
}

Samples

  提供一组样例用于自测

6
5 2 4 2 3 1
1 2 2 3 4 5

附ThreeWayQuickSort.h

#pragma once
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <functional>
using namespace std;

class MySort {
public:
	virtual void mysort(std::vector<int>& nums) = 0;
};

class ThreeWayQuickSort: public MySort {
public:
    // 通过三路快速排序对int数组nums进行升序排序
    // @param
    // nums: 完整的待排序队列,最终排序的结果应存放在nums中
    void mysort(std::vector<int>& nums);
    void three_way_quick_sort(std::vector<int>& nums, int p, int q);
};