放上c++代码模板(但是该版本中,还可以再进一步优化成原地算法,即不开辟新的空间;本代码中空间复杂度为n,不是1)

 1 #include <iostream>
2 #include<vector>
3 using namespace std;
4
5 void merge_func(vector<int> &v, int l, int m, int r)
6 {
7 vector<int> t;
8 int p=l, q=m+1;
9 while(p<=m && q<=r)
10 {
11 if(v[p]>v[q])
12 {
13 t.push_back(v[q]);
14 q++;
15 }
16 else
17 {
18 t.push_back(v[p]);
19 p++;
20 }
21 }
22 while(p<=m)
23 t.push_back(v[p++]);
24 while(q<=r)
25 t.push_back(v[q++]);
26
27 for(int i=l;i<=r;i++)
28 v[i] = t[i-l];
29
30 }
31
32 void merge_sort(vector<int> &v, int l, int r)
33 {
34 if(l<r)
35 {
36 int m = l+(r-l)/2; //先找到中点位置
37 merge_sort(v,l,m); //左侧归并排序
38 merge_sort(v,m+1,r); //右侧归并排序
39 merge_func(v,l,m,r); //合并左侧和右侧
40 }
41 }
42
43 int main()
44 {
45 vector<int> v={6,4,2,3,1,5};
46 //vector<int> v={3,6,1,2,4,7,5};
47 merge_sort(v,0,v.size()-1);
48 for(auto i:v)
49 cout<<i<<endl;
50 return 0;
51 }

最新文章

  1. jQuery2.x源码解析(缓存篇)
  2. 如何在使用itext生成pdf文档时给文档添加背景图片
  3. React Native的环境搭建以及开发的IDE
  4. Bubble Sort_树状数组
  5. CentOS 基本设置
  6. phpcms 网站迁移服务器
  7. ListView配合BaseAdapter
  8. 函数WideCharToMultiByte() 详解
  9. SQL Server 的事务和锁(一)
  10. 授予普通域用户远程桌面连接DC/客户端权限
  11. 【锋利的Jquery】读书笔记六
  12. Mac最好的虚拟机软件Parallels,体验比Vmware棒
  13. python笔记之异常
  14. 指令汇B新闻客户端开发(四) 自动轮播条
  15. 题解-COCI-2015Norma
  16. Linux-网络基础
  17. python从含有汉字和数字的字符串中提取数字部分
  18. spring mvc controller中的参数验证机制(二)
  19. dataTables分页实现两个前提
  20. 深度搜索优先(全排列)//本内容来自《啊哈!算法》或者英文名《Aha!Algorithms》)

热门文章

  1. cookie的简单介绍
  2. javascript链式运动框架案例
  3. MySQL索引结构之B+树索引(面)
  4. 广度优先遍历&amp;深度优先遍历
  5. python中 try、except、finally 的执行顺序(转)
  6. RedHat Linux-配置YUM仓库
  7. linux打包 压缩 解压tar常归操作
  8. Java 添加、读取、删除Excel中的图表趋势线
  9. JPA query between的多种方式(mongodb为例)
  10. centos7 ping: baidu.com: Name or service not known