递归实现归并排序
输入排序的数组的长度,程序用随机数生成对应的数组,之后递归调用排序,排序过程中思想类似于二分,当每个最小分组中只有一个元素时开始返回,直到排完整个数组。

#include<bits/stdc++.h>
using namespace std;
int num[1005];
void Merge(int l,int mid,int r)
{int temp[1005];int i=l,j=mid,k=0;while((i<=mid-1)&&(j<=r)){if(num[i]<=num[j])temp[k++]=num[i++];else temp[k++]=num[j++];}if(i>mid-1)for(int q=j;q<=r;q++)temp[k++]=num[q];elsefor(int p=i;p<=mid-1;p++)temp[k++]=num[p];for(int t=0,w=l;t<=r-l;t++)num[w++]=temp[t];}
void Mergesort(int l,int r)
{if(l>=r)return;int mid=(l+r)/2;Mergesort(l,mid);Mergesort(mid+1,r);Merge(l,mid+1,r);
}
int main()
{int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++)//scanf("%d",&num[i]);num[i]=rand();Mergesort(0,n-1);for(int i=0;i<n-1;i++)printf("%d ",num[i]);printf("%d\n",num[n-1]);}return 0;}

非递归实现归并排序
非递归的归并排序与递归实现主要区别在于排序的方向,递归是从大到小,当到达最小的时候开始返回,而非递归方式则是利用分组长度,每次合并排序一定长度的小数组,之后让这个长度不断扩大,直到完成整个数组的排序。

#include<bits/stdc++.h>
using namespace std;
int num[1005];
int n;
void Merge(int l,int mid,int r)
{if(l==r)return;  int temp[1005];int i=l,j=mid+1,k=1;while((i<=mid)&&(j<=r)){if(num[i]<=num[j])temp[k++]=num[i++];else temp[k++]=num[j++];}if(i>mid)for(int q=j;q<=r;q++)temp[k++]=num[q];elsefor(int p=i;p<=mid;p++)temp[k++]=num[p];for(int t=1,w=l;t<=r-l+1;t++)num[w++]=temp[t];}
void MergePass(int len)
{int i=1;while(i<=n+1-2*len){Merge(i,i+len-1,i+2*len-1);i=i+2*len;}if(i+len-1<n)Merge(i,i+len-1,n);
}
void Mergesort(int l,int r)
{int i=1;while(i<=r){MergePass(i);i+=i;}
}
int main()
{while(scanf("%d",&n)!=EOF)    {for(int i=1;i<=n;i++)//scanf("%d",&num[i]);num[i]=rand();Mergesort(1,n);for(int i=1;i<n;i++)printf("%d ",num[i]);printf("%d\n",num[n]);}return 0;}

计算机算法设计与分析 递归实现归并排序和非递归实现归并排序相关推荐

  1. 计算机算法设计与分析考试题,《计算机算法设计与分析》习题及答案

    <计算机算法设计与分析>习题及答案 一.选择题 1.二分搜索算法是利用( A )实现的算法. A.分治策略 B.动态规划法 C.贪心法 D.回溯法 2.下列不是动态规划算法基本步骤的是( ...

  2. 计算机算法设计与分析教学大纲,《算法设计与分析》教学大纲

    <<算法设计与分析>教学大纲>由会员分享,可在线阅读,更多相关<<算法设计与分析>教学大纲(3页珍藏版)>请在人人文库网上搜索. 1.课程编号:&quo ...

  3. 计算机算法设计与分析第五章思维导图知识点总结 ( 初稿 )

    复习链接 计算机算法设计与分析第一章思维导图 计算机算法设计与分析第二章思维导图&&知识点总结 计算机算法设计与分析第三章思维导图&&知识点总结 计算机算法设计与分析第 ...

  4. 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)

    计算机算法设计与分析(第4版) 目录 1 算法概述 2 递归与分治策略 3 动态规划 4 贪心算法 5 回溯法 6 分支限界法 7 随机化算法 8 线性规划与网络流 算法概述 复杂性分析 NP-完全性 ...

  5. 计算机算法设计与分析(第5版)PDF

    <计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...

  6. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  7. 国科大刘玉贵老师计算机算法设计与分析2021年期末考试题回顾

    总体感受 国科大研究生的计算机算法设计与分析课程有三位老师教授,分别是卜东波老师.陈玉福老师 和刘玉贵老师,这三位老师上课各有特色和风格.我选择的是刘玉贵老师的课程. 这门课程的内容挺充足的,但是有个 ...

  8. 线性时间选择 python实现 计算机算法设计与分析

    最近算法老师布置了很多作业啊,其中一项就是要求实现书上<计算机算法设计与分析>28页的算法,实现过程如下:

  9. 计算机算法设计与分析——数字三角形问题

    计算机算法设计与分析(算法实现题3) 3-4 数字三角形问题 问题描述: 给定一个由n行数字组成的数字三角形.试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大. 算法设计: ...

  10. 计算机算法设计与分析第四版复习,计算机算法设计与分析(第4版)第1章.ppt

    <计算机算法设计与分析(第4版)第1章.ppt>由会员分享,可在线阅读,更多相关<计算机算法设计与分析(第4版)第1章.ppt(50页珍藏版)>请在人人文库网上搜索. 1.计算 ...

最新文章

  1. 3.7.1 读取输入
  2. php扩展xdebug安装
  3. 数据库之事务及事务的 ACID 性质
  4. 傅立叶变换、拉普拉斯变换、Z变换之间 篇二
  5. Toast源码深度分析
  6. 【Openstack】实录手动部署Openstack Rocky 双节点(4)- Nova
  7. 用计算机解数独,6宫格数独计算器
  8. 计算机,通信,自动化等方向期刊排名
  9. Microsoft Store微软应用商店打不开怎么办?完美解决方案!
  10. GNU Makefile
  11. 房屋管理系统简单Damo
  12. python PyQt5程序运行界面无响应
  13. 正则表达式 取最后一个 . 然后进行匹配
  14. 【简单】求英文句子的平均单词长度
  15. 台达变频器vfb—d参数表_台达DPS
  16. su - oracle和su oracle 的区别
  17. 女程序员在IT界的发展方向是什么?
  18. 无向图判断是否为欧拉回路(以HDU1878为板子题)
  19. ArcGISEngine学习(1)
  20. Java简单实现单摆模拟

热门文章

  1. 为U盘装备Ubuntu工作学习两不误
  2. H3C HCSE 官方培训胶片(中文) 下载
  3. XPath: A Syntax for Describing Needles and Haystacks(Chapter 3 of XSLT 2nd Edition)
  4. 03-肯德基点餐:抽象工厂模式
  5. Golang Http Server源码阅读
  6. QQ邮箱发送邮件,出现mail from address must be same as authorization user错误
  7. 环形数组求最大子数组之和
  8. ORACLE数据库表空间查询
  9. IIS故障:World Wide Web Publishing无法启动 提示1721错误
  10. 《剑指 Offer I》刷题笔记 51 ~ 61 题