归并排序
来源:互联网 发布:遗传算法实现代码 编辑:程序博客网 时间:2024/06/07 06:30
归并排序
归并排序算是对分治算法的一种运用。
时间复杂度为O(nlogn)也是一种比较快速的排序算法
首先将代排序的数递归分化成多个小区间,那么我们可以默认,只有一个数的区间是已经排好序的
然后进行合并。
递归分化的代码:
void Mergesort(int l,int r){if(l>=r)return;int mid=(l+r)>>1; //分治过程,当只有一个数时可以默认为已经排序的状态Mergesort(l,mid); //已经排序好的左区间Mergesort(mid+1,r); //已经排序好的右区间Unite(l,mid,r); //排序加合并 }
合并的时候相当于把两个有序的数组合并
那么合并的方法就是,每次取最小的两个比较,
小的那个记录下来,并且删去,继续比较
代码:
void Unite(int l,int mid,int r) //合并[l,mid],[mid+1,r]; {int tmp[20],t=0;int ll=l,rl=mid+1,mm=mid;while(ll<=mm&&rl<=r) //两段取最小的比较,小的输出并删去 {if(m[ll]<m[rl])tmp[t++]=m[ll++];elsetmp[t++]=m[rl++];}while(ll<=mm)tmp[t++]=m[ll++];while(rl<=r)tmp[t++]=m[rl++];for(int i=0;i<t;i++) //将排序好的赋值给区间 [l,r] m[l+i]=tmp[i];}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- (搬运).net起步 (身份验证机制 membership 项目演练)
- linux查看进程与线程信息(pstree pstack jstack)
- HTML系列之嵌入式 (五)
- 同时安装python2和python3,出现fatal error in launcher: unable to create process using‘’‘’错误
- 96. Unique Binary Search Trees
- 归并排序
- 京东量化小馒头之pandas库常用函数汇总
- 贪心之多机调度问题
- EL
- 程序调试优化一:浏览器端查看、抓取后台返回数据的方法
- 暴力拆解《Numerical Optimization》之线搜索
- Idea破解
- RabbitMQ的元数据重建
- 581. Shortest Unsorted Continuous Subarray