相比上一个C++归并排序的版本,这次复习了一下STL的基本方法
因为要使用随机访问迭代器,所以序列使用了vector容器,而要使用lis容器t的merge算法,因此在合并时使用了list容器和vector容器之间相互转换
不过让我疑惑的是,似乎VS2013上迭代器不能重载[]运算符?
#include<iostream>
#include<list>
#include<vector>
#include<algorithm>
template<typename T>
void MergeSort(std::vector<T> <, int p, int r);
template<typename T>
void Merge(std::vector<T> <, int p, int q, int r);
int main()
{
using namespace std;
vector<int> lt{9, 8, 7, 6, 5, 4, 3, 2, 1, 0};
for (auto &x : lt)
cout << x << " ";
cout << "\n";
MergeSort(lt, 0, lt.size()-1);
for (auto &x : lt)
cout << x << " ";
cout << "\n";
return 0;
}
template<typename T>
void MergeSort(std::vector<T> <, int p, int r)
{
int q;
if (p < r)
{
q = (p + r) / 2;
MergeSort(lt, p, q)