归并排序 MergeSort
2015-07-16 13:21
381 查看
递归的归并排序
// MergeSorttest.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <VECTOR> #include <IOSTREAM> using namespace std; void Merge(vector<int> & v,int begin,int mid,int end){ int i = 0; vector<int> temp; int index1 = begin; int index2 = mid+1; while(index1 <= mid && index2 <= end){ if(v[index1] < v[index2]){ temp.push_back(v[index1]); index1++; } else{ temp.push_back(v[index2]); index2++; } } while(index1 <= mid) temp.push_back(v[index1++]); while(index2 <= end) temp.push_back(v[index2++]); for(i = 0;i<temp.size();i++){ // cout<<temp[i]<<" "; v[begin++] = temp[i]; } } void MergeSort(vector<int> & v,int begin,int end){ if(begin < end){ int mid = (begin+end)/2; MergeSort(v,begin,mid); MergeSort(v,mid+1,end); Merge(v,begin,mid,end); } } int main(int argc, char* argv[]) { int array[] = {2,1,86,36,96,47,41,42,36,61,46,98,63,71,8,0,111,42,111,122,756,245,176,786 }; vector<int> ivec(array,array+sizeof(array)/sizeof(int)); MergeSort(ivec,0,sizeof(array)/sizeof(int)-1); for(int i = 0;i<sizeof(array)/sizeof(int);i++) cout<<ivec[i]<<" "; cout<<endl; return 0; }
相关文章推荐
- LeetCode "Product of Array Except Self"
- 发票丢失如何处理
- Activity生命周期(2)
- OpenFlow协议之殇?
- MongoDB入门
- cocos2d-x游戏实例(4)-地图碰撞
- cocos2d-x游戏实例(3)-获得地图索引
- Lucene索引的增删改查和二次检索
- utsname.h
- Algorithms—108.Convert Sorted Array to Binary Search Tree
- 如何学习 cocos2d-x ?
- 《破坏之王—DDoS攻击与防范深度剖析》
- cocos2d-x游戏实例(2)-主角根据输入移动
- Flex与servlet交互2(数据的解析Json)
- Response.Write用法总结
- Android音乐播放器 -- MediaPlayer Service实现
- cocos2d-x游戏实例(1)-视角跟随主角
- 【asp学习】【02】记录
- Android采访开发——2.通用Android基础笔试题
- 17.Java5的Exchanger同步工具