算法2.2 合并排序
来源:互联网 发布:电路绘图软件 编辑:程序博客网 时间:2024/06/16 08:42
问题:将n个键排列为非递减顺序。
输入:正整数n;键的数组S,其索引范围为1-n,
输出,数组S,其中键按照非递减排序。
//C/C++#include<iostream>#include<stdio.h>#include<stdlib.h>using namespace std;//归并排序void Merge(int h,int m,const int U[],const int V[],int S[]){ int i=0,j=0,k=0; while(i<h&&j<m) { if(U[i]<V[j]) S[k++]=U[i++]; else { S[k++]=V[j++]; } } if(i>=h)//将V[j]至V[m]复制到S[K]至S[h+m]中 while(j<m) S[k++]=V[j++]; else while(i<h) S[k++]=U[i++];}void mergesort(int n,int S[]){ if(n>1) { const int h=n/2,m=n-h; int U[h],V[m]; for(int i=0;i<h;i++) U[i]=S[i];//将S[]数组的前h项移动到数组U; int temp=h; for(int i=0;i<m;i++) V[i]=S[temp++];//将S[]数组的后m项移动到数组V; mergesort(h,U); mergesort(m,V); Merge(h,m,U,V,S);//可以合并两个有序数组的算法 }}int main(){ int S[100]={0}; for(int i=0;i<8;i++) cin>>S[i]; mergesort(8,S); for(int i=0;i<8;i++) { cout<<S[i]<<endl; } return 0;}
1 0
- 算法2.2 合并排序
- 排序算法---合并排序
- 排序算法-合并排序
- 合并排序算法
- 合并排序算法
- 算法-----合并排序
- java 合并排序算法
- 合并排序算法
- 合并排序算法
- 合并排序算法
- 合并排序 算法实现
- c++合并排序算法
- 合并排序算法
- javascript 合并排序算法
- 合并排序算法
- 合并排序算法
- 算法之合并排序
- 合并排序算法
- 网页设计制作必须知道的10个秘诀
- 计算阶乘和
- Python常用标准库 --- time
- Android 日常开发总结的技术经验 60 条
- [Codeforces710D]Two Arithmetic Progressions(扩展中国剩余定理)
- 算法2.2 合并排序
- addAttributeToFilter condition in Magento
- Nginx的安装
- Report_server_and_alert_oracle.sh
- [安全] -- PHP API 等传输 明文加密解密方法
- Hive学习笔记8@运维相关
- 通过哪个日志查看CRS启动过程
- json单对象、多对象拼接方式
- AJAX返回状态200没有调用success