合并排序
来源:互联网 发布:淘宝手机版千牛工作台 编辑:程序博客网 时间:2024/06/07 02:30
//合并排序#include <iostream> using namespace std; int a[105],b[105]; void Merge(int c[],int d[],int l,int m,int r); void MergeSort(int a[],int left,int right); int main() { int n;cin>>n; for(int i=0; i<n; i++) { cin>>a[i]; } MergeSort(a,0,n-1); for(int i=0; i<n; i++) { cout<<a[i]<<" "; } cout<<endl; } void Merge(int c[],int d[],int l,int m,int r) { //合并c[l:m]和c[m+1:r]到d[l:r] int i = l,j = m + 1,k = l; while((i<=m)&&(j<=r)) {//从左到右依次比较,较小值赋给d[] if(c[i]<=c[j]) { d[k++] = c[i++]; } else { d[k++] = c[j++]; } } if(i>m) { //左侧已赋值完,将右侧剩余部分赋给d[] for(int q=j; q<=r; q++) { d[k++] = c[q]; } } else { //右侧已赋值完,将左侧剩余部分赋给d[] for(int q=i; q<=m; q++) { d[k++] = c[q]; } } } void MergeSort(int a[],int left,int right) { if(left<right) { int i = (left + right)/2; MergeSort(a,left,i); MergeSort(a,i+1,right); Merge(a,b,left,i,right);//合并到数组b //复制回数组a for(int g=left; g<=right; g++) { a[g] = b[g]; } } }
0 0
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- 合并排序
- json解析存在的精度丢失问题详解
- JAVA多线程和并发基础面试问答
- fault,error和failure的区别与联系
- Device Tree Usage
- 使用IntelliJ IDEA 配置Maven(入门)
- 合并排序
- maven 亲测可用国内镜像 阿里云
- 浙江省第十四次ACM程序竞赛 Let's Chat(D题)
- Git免密码操作
- Java中的多线程你只要看这一篇就够了
- 快速排序
- C++has-a关系
- Android MTK 去掉 Setting 中 Wifi 和 蓝牙
- 关于eclipse Unresolved import ***(models)错误的解决