算法导论—归并merge排序
来源:互联网 发布:mac鼠标windows系统 编辑:程序博客网 时间:2024/05/16 07:18
#include <iostream>#include <vector>#include <cmath>using namespace std;void Merge(vector<int> &vec,size_t p,size_t q,size_t r){auto n1=q-p+1;auto n2=r-q;vector<int> lhs(n1+1);vector<int> rhs(n2+1);for(int i=0;i<n1;++i)lhs[i]=vec[p+i];for(int j=0;j<n2;++j)rhs[j]=vec[q+j+1]; //哨兵lhs[n1]=10000; rhs[n2]=10000;for(auto v:lhs)cout<<v<<" ";cout<<endl;for(auto v:rhs)cout<<v<<" ";cout<<endl;int i=0;int j=0;for(size_t k=p;k<=r;++k){if(lhs[i]<rhs[j]){vec[k]=lhs[i];i++;}else{vec[k]=rhs[j];j++;}}}void mergeSort(vector<int> &vec,size_t p,size_t r){if(p<r){size_t q=(p+r)/2;mergeSort(vec,p,q);mergeSort(vec,q+1,r);Merge(vec,p,q,r);}}int main(){vector<int> vec{5,2,4,7,1,3,2,6};mergeSort(vec,0,7);for(auto v:vec)cout<<v<<" ";cout<<endl;}
0 0
- 算法导论—归并merge排序
- 【算法导论】归并排序
- [算法导论]归并排序
- 算法导论-----归并排序
- 【算法导论】归并排序
- 算法导论-归并排序
- 算法导论-归并排序
- 算法导论 归并排序
- 算法导论-归并排序
- 《算法导论》--归并排序
- 算法导论--归并排序
- 算法导论——归并排序
- 算法导论笔记——归并排序
- 算法导论例程——归并排序
- 算法导论——归并排序
- 归并排序——算法导论学习
- 归并排序算法——Merge Sort
- 算法导论P17 归并排序
- 给定半径圆心未定的圆和若干点
- [译] 关于CSS中的float和position (父容器div内的子元素div为float时,父元素无法撑开(或高度自适应)的解决方式)
- 14、自定义视图之模仿ViewPage,用继承ViewGroup实现
- 如何给String类型的变量,加上“...”
- IT人士健康食谱
- 算法导论—归并merge排序
- 操作系统学习笔记:CPU调度
- 使用MySql 的 一个错误
- LinkedList的实现原理
- c#---参数
- 从最简单的实例学习ARM 指令集(二)
- leng dw $ -string汇编语言
- iOS开发路线简述
- php mail