//递归代码实现归并排序
#include<iostream>
#include"stdio.h"
using namespace std;
#define MAXSIZE 10
void Mering(int * p1, int p1_size, int *p2, int p2_size)
{int i=0, j=0, k=0, m;//其中i,j是p1,p2的指针int temp[MAXSIZE];while (i<p1_size&&j<p2_size){ if (p1[i] < p2[j]){temp[k++] = p1[i++];}else{temp[k++] = p2[j++];}}while (i<p1_size){temp[k++] = p1[i++];}while (j<p2_size){temp[k++] = p2[j++];}for (m = 0; m < (p1_size + p2_size); m++){p1[m] = temp[m];}
}void MergeSort(int k[], int n)
{if (n > 1){int *p1 = k;int p1_size = n / 2;int *p2 = k + n / 2;int p2_size = n - (n / 2);MergeSort(p1,p1_size);//分解MergeSort(p2, p2_size);//分解Mering(p1, p1_size, p2, p2_size);//合并}}int main()
{int a[10] = {5,2,6,0,3,9,1,7,4,8};int i;MergeSort(a,10);printf("排序后的结果是:");for (i = 0; i < 10; i++){printf("%d", a[i]);}printf("\n");return 0;
}
//迭代代码实现归并排序(还有点小问题,未能调试成功)
#include<iostream>
#include"stdio.h"
using namespace std;
#define MAXSIZE 10void MergeSort(int k[], int n)
{int i, left_min, left_max, right_min, right_max;int next;int *temp = (int*)malloc(n*sizeof(int));for (i = 1; i < n; i *= 2){for (left_min = 0; left_min < n - i; left_min = right_max){right_min = left_max = left_min + 1;right_max = left_max + 1;if (right_max>n){right_max = n;}next = 0;while (left_min < left_max && right_min < right_max){if (k[left_min] < k[right_min]){temp[next++] = k[left_min++];}else{temp[next++] = k[right_min++];}}while (left_min < left_max){k[--right_max] = k[--left_max];}while (next>0){k[--right_min] = temp[--next];}}}}
int main()
{int a[10] = { 5, 2, 6, 0, 3, 9, 1, 7, 4, 8 };int i;MergeSort(a, 10);printf("排序后的结果是:");for (i = 0; i < 10; i++){printf("%d", a[i]);}printf("\n");return 0;
}

归并排序递归实现迭代实现相关推荐

  1. java 归并排序 非递归_归并排序-递归及非递归的JAVA实现

    归并排序介绍 平均时间复杂度: O(NLogN) 最好情况时间复杂度: O(NLogN) 最差情况时间复杂度: O(NLogN) 所需要额外空间: 递归:O(N + LogN), 非递归:O(N) 稳 ...

  2. 递归、迭代、分治、回溯、动态规划、贪心算法

    今天就简单来谈谈这几者之间的关联和区别 递归 一句话,我认为递归的本质就是将原问题拆分成具有相同性质的子问题. 递归的特点: 1.子问题拆分方程式,比如:f(n) = f(n-1) * n 2.终止条 ...

  3. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)

    上节中提到了一些有关递归查询的内容,但说的很少,也很笼统,本节将会从原理和实例两方面入手分析DNS的递归以及迭代查询. 在此之前,我们需要了解一些背景知识,以便于更好的理解今天的主题内容. 在互联网中 ...

  4. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法

    LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历–递归,迭代–反向压栈–C++解法 LeetCode题解专栏:LeetCode题解 LeetC ...

  5. 利用递归、迭代解决斐波那契数列问题与汉诺塔难题

    有人说,"普通程序员使用迭代,天才程序员使用递归",真是这样吗? 1.浅谈递归与迭代 <1>递归的基本概念: 程序调用自身的编程技巧称为递归,是函数自己调用自己. 一个 ...

  6. linux关闭dns迭代查询,DNS查询和响应过程递归和迭代的使用

    需要了解DNS查询过程的递归和迭代的机制,找到了RFC的相关章节, 对这个进行了简单的翻译(水平有限),可以留下来做个参考. RFC 1034 4.3.1. Queries and responses ...

  7. 递归和迭代_迭代与递归

    很多编程小白都会遇到'迭代'和'递归'的问题(包括我自己),大部分同学还是不知道迭代与递归的区别.下面我就尝试用最通俗易懂的模式讲解递归与迭代的区别. 1.迭代: 迭代其实很简单,我们在编程中经常用到 ...

  8. C语言反转二叉树的递归和迭代解决方案(附完整源码)

    C语言反转二叉树的递归和迭代解决方案 C语言反转二叉树的递归和迭代解决方案完整源码(定义,实现,main函数测试) C语言反转二叉树的递归和迭代解决方案完整源码(定义,实现,main函数测试) #in ...

  9. 树形结构:从二分查找,二叉搜索树寻找最近祖先,从递归到迭代,实现技巧总结

    二分查找,二叉搜索树寻找最近祖先均是典型分治问题,把原问题分成三部分考虑,递归实现简单,迭代实现也比较简单,里面蕴含了一些从从递归到迭代的技巧,注意这里没有使用模拟栈技术. 深究其原因是,这一类型的递 ...

  10. LeetCode--144,94,145,102 二叉树的前序、中序、后序、层序遍历(递归,迭代,栈,队列)

    二叉树的前序.中序.后序.层序遍历(递归,迭代,栈,队列) 1. 二叉树的前序遍历 1.1 题目描述 1.2 题目分析 1.3 Python实现 2. 二叉树的中序遍历 2.1 题目描述 2.2 题目 ...

最新文章

  1. gzip、bzip2和tar
  2. Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略
  3. 技能模块的防外挂机制和同步机制优化
  4. 魅族显示无法连接到服务器,魅族连接电脑无法识别怎么办_魅族手机usb无法连接电脑的解决方法...
  5. 月入1万的工作,招不到人,怎么办?
  6. HDU1863 畅通工程【Kruskal算法+并查集】
  7. 【多元统计分析】01.多元统计的基础
  8. 最新Oreo支付系统平台完整源码+已全开源
  9. 取整函数 --- 以Python为例
  10. python 笔记之“海龟”画图 演示画小猪佩奇,机器猫
  11. 阳历时间转换为农历时间
  12. 数据库系统--期末复习
  13. rpm搭建LAMP+Discuz论坛
  14. 洛谷 T2691 桶哥的问题——送桶
  15. 李白打酒 c语言,C语言递归调用1:李白打酒
  16. 传输层协议TCP—滑动窗口(6)
  17. 网络安全之路:我的系统性渗透测试学习框架
  18. Linux文件写入读取与关闭(二)
  19. Java和go加密,解密,Base64失败
  20. 【计算机视觉处理5】阈值处理

热门文章

  1. Atitit postgresql data type 数据类型与mysql对应表 数据库常用数据类型 Postgre Mysql 整数 intgreter Int 小数 numeric FL
  2. Atitit 建立新组织集团模型的框架基本制度与一些原则
  3. Atitit html5.1 新特性attilax总结
  4. Atitit Atitit 零食erp数据管理---世界著名零食系列数据.docx世界著名零食
  5. Atitit 图像处理知识点  知识体系 知识图谱
  6. python: Requests库的一些高级特性
  7. 投行巨头金融科技战略——摩根士丹利财富管理转型之路篇
  8. Rust: codewars 的Duplicate Encoder
  9. (转)智能投顾只能这么搞!美国证监会发15页指南
  10. Julia : string =Int,Float