归并排序
来源:互联网 发布:优化环境建设 编辑:程序博客网 时间:2024/04/27 22:37
归并排序步骤:
1.划分子问题
2.递归求解
3.合并
分治法分一种
时间复杂度:O(nlogn)
比快速排序更稳定
缺点:
1.用到辅助空间,空间消耗更大
2.需要复制回原数组
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int N=1e5+5;int a[N],T[N];void merge_sort(int *A,int x,int y){ if(y-x>1) { int m=(x+y)/2; int l=x,i=x,r=m; merge_sort(A,x,m); merge_sort(A,m,y); while(l<m||r<y)///两个序列至少有一个不为空 { if(r>=y||l<m&&A[l]<=A[r]) T[i++]=A[l++];///复制左边的 else T[i++]=A[r++];///复制右边的 } for(int i=x; i<y; i++)///复制回原数组 A[i]=T[i]; }}int main(){ int n; while(~scanf("%d",&n)) { for(int i=0; i<n; i++) scanf("%d",&a[i]); merge_sort(a,0,n); for(int i=0; i<n; i++) printf("%d ",a[i]); printf("\n"); } return 0;}
阅读全文
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- JPA学习笔记(9)——映射双向一对多关联关系
- 第三篇:JAVA集合之Vector源码剖析
- Elastic ik插件配置热更新功能
- 欢迎使用CSDN-markdown编辑器
- SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 归并排序
- 安装opencv 和 pip
- SpringMvc+ajax 实现json格式数据传递
- python sys.argv的用法
- 刷题——Meteor Shower POJ
- C#中Form的Paint事件响应方法与重载虚方法OnPaint()的区别
- 20170814_为什么C++ 中空类的大小是1个字节?
- 2017.08.14:神经网络入门
- Colorful Tree