# 归并排序

// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;

vector<int> remerge(vector<int> left, vector<int> right) {
vector<int> res;
vector<int>::iterator itleft= left.begin();
vector<int>::iterator itright = right.begin();
while (itleft!=left.end()&&itright!=right.end()) {
if (*itleft<*itright) {
res.push_back(*itleft);
itleft++;
}
else {
res.push_back(*itright);
itright++;
}
}
while (itleft != left.end()) {
res.push_back(*itleft);
itleft++;
}
while (itright != right.end()) {
res.push_back(*itright);
itright++;
}
return res;
}

vector<int> mergesort(vector<int> vec) {
int size = vec.size();
if (size <= 1) {
return vec;
}
vector<int>::iterator mid = vec.begin() + size / 2;
vector<int> left(vec.begin(), mid);
vector<int> right(mid, vec.end());
vector<int> mergeleft=mergesort(left);
vector<int> mergeright=mergesort(right);
return remerge(mergeleft, mergeright);
}

int main() {
int a[] = { 2,1,8,6,3,9,3,5 };
vector<int> vec(begin(a), end(a));
vec=mergesort(vec);
for (auto i : vec)
cout << i << ",";
cout << endl;

system("pause");
return 0;
}



• 点赞 2
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

高冷喵

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
10-24

03-30
11-15
05-03
04-13
05-30 8万+
08-11 34万+
10-17