【排序算法模板】归并排序
2015-07-07 19:46
417 查看
#include <iostream> #include <vector> using namespace std; void Merge(vector<int>& nums, const int first, const int mid, const int last, vector<int>&temp) { int begin1 = first, end1 = mid; int begin2 = mid + 1, end2 = last; int cnt = 0; while(begin1 <= end1 && begin2 <= end2) { if(nums[begin1] <= nums[begin2]) temp[cnt++] = nums[begin1++]; else temp[cnt++] = nums[begin2++]; } while(begin1 <= end1) temp[cnt++] = nums[begin1++]; while(begin2 <= end2) temp[cnt++] = nums[begin2++]; for(int i = 0; i < cnt; i++) nums[first + i] = temp[i]; } void MergeSort(vector<int>& nums, const int first, const int last, vector<int>& temp) { if(first < last) { int mid = (last + first) / 2; MergeSort(nums, first, mid, temp); MergeSort(nums, mid + 1, last, temp); Merge(nums, first, mid, last, temp); } } int main() { int a[] = {23, 34, 45, 78, 90, 12, 49, 92, 32, 19}; vector<int> nums(a, a + 10); vector<int> temp(10, 0); MergeSort(nums, 0, 9, temp); for(int i = 0; i < nums.size(); i++) cout<<nums[i]<<" "; cout<<endl; }
相关文章推荐
- linux常用命令一些解释
- beff 与msf 安装
- Linux终端查看“我是谁”(“妈妈喜欢谁”)
- Cocos2dx中播放多个音效冲突问题
- 数的全排列
- 学而时习之
- Mysql创建用户的三种基本方法
- 在屏幕拖拽3D物体移动
- 回调框架 不知道异步可以用不,在尝试
- haproxy frontend 和backend
- git mac github 使用
- Hibernate之HelloWorld
- Leetcode Kth Smallest Element in a BST
- Android编译输出 资源指定AAPT
- android app 测试case积累
- Java设计模式---单例模式
- 写给自己的学习感言
- 移动web:图片切换(焦点图)
- 基于nodejs 的微信 JS-SDK 简单应用
- lc面试准备:Implement Stack using Queues