40 lines
931 B
C++
40 lines
931 B
C++
#pragma once
|
|
#include "Jacobstahl.hpp"
|
|
#include <vector>
|
|
#include <deque>
|
|
#include <ostream>
|
|
#include <stdexcept>
|
|
|
|
class PmergeMe
|
|
{
|
|
public:
|
|
PmergeMe() = delete;
|
|
PmergeMe(const int argc, const char **argv);
|
|
PmergeMe(const PmergeMe &other);
|
|
~PmergeMe();
|
|
|
|
PmergeMe &operator=(const PmergeMe &other);
|
|
|
|
void sort();
|
|
std::string getPrintableVector() const;
|
|
std::string getPrintableDeque() const;
|
|
|
|
private:
|
|
std::vector<int> _data_vector;
|
|
std::deque<int> _data_deque;
|
|
std::vector<int> _jacobstahl_numbers;
|
|
bool less(int a, int b);
|
|
int _comparisons;
|
|
|
|
bool areAllUnique() const;
|
|
|
|
template <typename Container>
|
|
void insert(Container &main, Container &pend, int start_index, int right, int group_size);
|
|
|
|
template <typename Container>
|
|
Container sort(Container &data, int level);
|
|
};
|
|
|
|
std::ostream &operator<<(std::ostream &os, const PmergeMe &obj);
|
|
|
|
#include "PmergeMe.tpp" |