归并排序(merge sort)c++实现
来源:互联网 发布:ps4全境封锁网络优化 编辑:程序博客网 时间:2024/04/29 23:32
利用的不是数组而是向量,因为输入方便。
#include <iostream>#include <vector>#include <string>#include<climits>using namespace std;void merge(vector<int> &a,int p,int q,int r){int max=INT_MAX;int n1=q-p+1;int n2=r-q;vector<int> L,R;for(int i=0;i<n1;++i){L.push_back(a[p+i]);}for(int j=0;j<n2;++j){R.push_back(a[q+j+1]);}L.push_back(max);R.push_back(max);//for(auto i:L){cout<<i<<" ";}//cout<<endl;//for(auto i:R){cout<<i<<" ";}//cout<<endl;int i=0,j=0;for(int k=p;k<=r;++k){if(L[i]<=R[j]){a[k]=L[i];++i;}else{a[k]=R[j];++j;}}}void merge_sort(vector<int> &a,int p,int r){if(p<r){int q=(p+r)/2;merge_sort(a,p,q);merge_sort(a,q+1,r);merge(a,p,q,r);}}int main(){vector<int> a;int b;while(cin>>b){a.push_back(b);}for(auto i:a){cout<<i<<" ";}cout<<endl;int r=a.size();merge_sort(a,0,r-1);for(auto i:a){cout<<i<<" ";}return 0;}
阅读全文
0 0
- 归并排序(merge sort)的实现
- 归并排序(merge sort)c++实现
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(Merge Sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- Merge Sort (归并排序)
- 归并排序(Merge sort)
- 归并排序(Merge sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(MERGE-SORT)
- 归并排序(Merge Sort)
- 【python challenge】Level1
- 拓扑排序的原理及其实现
- C语言之三种基本程序结构(笔记七)
- [PAT乙级]1067. 试密码(20)
- 最小生成树之Kruskal算法
- 归并排序(merge sort)c++实现
- 图论五百题
- 字符串的逆序
- 最小生成树之Prim算法
- c++内存池的实现(可以new复杂对象)
- 最小生成树——Kruskal算法
- c++ 最小生成树——Prim和Kruskal理解与分析
- Java 面试题(一)
- npm 命令