#include <iostream>
#include <vector>
using namespace std;
template<class T>
void merge(T &arr, int begin, int mid, int end) {
vector<int> temp;
int i = begin;
int j = mid + 1;
while (i <= mid && j <= end) {
if (arr[i] < arr[j]) {
temp.push_back(arr[i++]);
}
else {
temp.push_back(arr[j++]);
}
}
while (i <= mid) {
temp.push_back(arr[i++]);
}
while (j <= end) {
temp.push_back(arr[j++]);
}
for (i = 0; i < temp.size(); i++) {
arr[i+begin] = temp[i];
}
}
template<class T>
void mergeSort(T &arr,int begin,int end) {
int mid = (begin + end) / 2;
if (begin < end) {
mergeSort(arr, begin, mid);
mergeSort(arr, mid + 1, end);
merge(arr, begin, mid, end);
}
}
int main() {
vector<int> arr{ 1,2,5,8,5,3,1,5,2,156,5,23,5 };
int end = arr.size();
mergeSort(arr, 0, end-1);
for (auto p = arr.begin(); p != arr.end(); p++) {
cout << *p << " ";
}
cout << endl;
system("pause");
return 0;
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-15402.html