排序会了递归,不学非递归太可惜了

有一天我用水壶烧水的时候 不小心水放满了 于是当它烧沸腾的时候 水一直往外冒 我便想起了递归导致栈溢出的情况 …

有一天我用水壶烧水的时候

不小心水放满了

于是当它烧沸腾的时候

水一直往外冒

我便想起了递归导致栈溢出的情况

于是阿紫姐姐便在网上学习了非递归算法

接下来阿紫姐姐传授给大家哦!


本期阿紫姐姐就带领大家一起来学习快速排序、归并排序非递归的实现哦!!!

目录:

1、快速排序非递归

2、归并排序非递归

学习非递归之前我们得先学习递归的缺陷,才能更好了解非递归的优势。

递归的缺陷:栈帧空间太深,栈空间不够用,会导致溢出。

c语言内存分配:

例如:

递归1000次:

递归10000次:

图解:

递归(函数调用)是进行压栈的操作,当压栈太深时,就会造成栈溢出的情况。


递归改非递归方法:①直接改循环 ②借助数据结构栈模拟递归过程

1、快速排序非递归

我们来运用非递归实现快速排序挖坑法

1.1代码实现

栈的操作,大家可以看阿紫之前发的“不会2022年还有人不懂栈吧”这篇博文哦!

1.2思路讲解

我们根据上面的代码来学习思路

2、归并排序非递归

2.1代码实现

2.2思路讲解

本文来自网络,不代表软粉网立场,转载请注明出处:https://www.rfff.net/p/4071.html

作者: HUI

发表评论

您的电子邮箱地址不会被公开。

返回顶部