归并排序
来源:互联网 发布:腾讯代理绝地求生优化 编辑:程序博客网 时间:2024/06/06 15:46
#include<stdio.h>void sort(int *arr,int s,int e);void merge(int *arr,int s,int m,int e);int main(){ int n,arr[100]={0}; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&arr[i]); sort(arr,1,n); for(int i=1;i<=n;i++) printf("%d ",arr[i]); return 0;}void sort(int *arr,int s,int e){ int m; if(s<e) { m=(s+e)/2;//分成两段 sort(arr,s,m); sort(arr,m+1,e); merge(arr,s,m,e); }}void merge(int *arr,int s,int m,int e){ int l[m-s+2];//左边,因为所有i从1开始,m-s+1再要加1 int r[e-m+1];//右边 for(int i=1;i<=m-s+1;i++) l[i]=arr[s+i-1];//不用多余参数表示arr下标 for(int i=1;i<=e-m;i++) r[i]=arr[m+i]; int i=1,j=1,k=s; while(i<=(m-s+1)&&j<=(e-m)) { if(l[i]<=r[j])//判断两个数组的元素大小 arr[k++]=l[i++]; else arr[k++]=r[j++]; } while(i<=(m-s+1))//排除某一个数组没有处理完 arr[k++]=l[i++]; while(j<=(e-m)) arr[k++]=r[j++];}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 51nod-加农炮
- HAProxy安装配置详解
- solrcloud 报 HTTP Status 503
- 最新版的OpenCV中新增加的ORB特征的使用
- git detachhead在回滚代码的时候的使用
- 归并排序
- eclipse的maven项目导入第三方jar包到pom.xml的方法
- JUnit使用(二)
- PHP调试的时候遇到Warning: session_start() [function.session-
- 理解Java内存模型
- bash数据流重定向与管道
- Android 在 Eclipse 项目中使用 Leakcanary 内存泄露检测
- Java内存管理:深入Java内存区域
- Gradle 1.12用户指南翻译——第五十九章. 组织构建逻辑