当前位置: 首页 > news >正文

黔东南苗族侗族自治州网站建设_网站建设公司_MongoDB_seo优化

旅游网站建设的课题研究的主要内容,wordpress 判断文章,长沙学校网站建设,wordpress转成hexo上期我们实现了快速排序的递归实现#xff0c;但是我们知道如果递归深度太深#xff0c;栈就会溢出#xff0c;所以我们本期将为大家讲述快速排序的非递归实现#xff0c;我们需要用到栈的数据结构#xff0c;我们知道栈中的数据全是在堆区开辟的空间#xff0c;堆的空间… 上期我们实现了快速排序的递归实现但是我们知道如果递归深度太深栈就会溢出所以我们本期将为大家讲述快速排序的非递归实现我们需要用到栈的数据结构我们知道栈中的数据全是在堆区开辟的空间堆的空间大小是比栈的大小要大的这便是我们为什么要采用非递归的方法实现快排的原因。 快速排序非递归实现 在学习非递归之前我们先回顾一下使用递归方法实现排序的方法我们依旧采用第一种单趟排序的方法。这种方法单趟排序的目的就是最终找一个key如果是排升序最终k位置左边的所有元素都比key位置上的元素小右边的所有元素都比key位置上的元素大。也就意味着最终找到了一个key位置这个位置上的元素已经排好了序。         当我们进行完单趟排序之后找到了一个key值因为这个位置的元素已经排好了序所以我们只需要对这个key位置左边和右边的所有元素进行快速排序即可这就是我们实现快速排序的递归方法。单趟排序一次只能排好一个元素。 那么如何进行非递归呢? 非递归的实现其实是在递归的方法上进行改进的就是将递归中的操作改成用循环来实现。因为单趟排序一次可以排好一个元素那么n个元素总共就需要n-1次单趟排序然后我们就可以利用循环来进行所有的单趟排序每一次单趟排序都会返回一个key我们要根据key的位置确定下一次单趟排序的元素的下标范围。假如我们现在已经确定了一个key那么此时我们要么开始对右边进行单趟排序要么对左边的元素进行单趟排序但是一旦我们选择了左边那么就必须将左边的所有元素排好序之后才能去排右边的元素所以我们如果先排了左边那么就需要将右边的元素的下标范围存储起来以便于最后将左边元素排好之后返回来进行右边的排序。怎么样保存这便就用到了栈的数据结构。如果先对左边的所有元素进行单趟排序后对右边的所有元素进行单趟排序根据栈先进后出的性质那么就得先将右边元素的下标入栈再将左边的元素的下标入栈。因为当数组中只有一个元素时是没有必要进行单趟排序的所以要进行单趟排序必须保证数组中至少有两个元素这就是我们是否继续进行单趟排序的条件。 以上便是非递归的思路总的来说有些复杂大家仔细阅读几遍。 图示如下  非递归整体代码如下 void QuickSortNR(int* a, int left, int right) {ST Stack;StackInit(Stack);StackPush(Stack, right);StackPush(Stack, left);while (!StackEmpty(Stack)){int begin StackTop(Stack);StackPop(Stack);int end StackTop(Stack);StackPop(Stack);int key PartSort1(a, begin, end);if (begin key - 1){StackPush(Stack, key - 1);StackPush(Stack, begin);}if (key 1 end){StackPush(Stack, end);StackPush(Stack, key 1);}}StackDestroy(Stack); } 注意我们使用非递归实现快速排序时最重要的还是要保证栈中元素的变化只有当栈中存在元素时我们才进行循环栈中存放的就是我们每次进行单趟排序的区间。  到此快速排序的所有知识点我们已经学习完总而言之在我们多次的优化下快速排序已经是一个非常优秀的排序了。 本期内容到此结束^_^
http://www.lebaoying.cn/news/57641.html

相关文章:

  • 公司网站定制网站歌曲代码
  • 喀什网站制作如何做英文网站的中文网
  • 个人建网站需要什么手续网站 head关键字 密度 多少字
  • 网站怎么做动效wordpress free themes
  • 做临时工有哪些网站腾讯小程序怎么制作
  • 海南茶叶网站建设发布软文广告
  • 泰国做彩票网站网页和移动端界面设计
  • 怎么学建设网站移动网站建设商
  • 自己怎么建网站卖东西推广赚钱软件排行
  • 公司做零申报在哪个网站上深圳短视频代运营公司
  • 使用他人商标做网站搜索词外链是什么意思
  • 搭建网站架构是什么意思深圳营销型网站开发
  • 建筑模型网站有哪些微信小程序定制开发需要多少钱
  • aje网站润色一个具体网站的seo优化方案
  • 网站免费虚拟主机申请抚州市建设局官方网站
  • 电子商务网站建设的结论wordpress 购物 主题
  • 襄阳市住房和城乡建设厅网站上金融网站开发的意义 论文
  • asp企业网站源码下载免费推广平台微信号
  • 社区网站建设申请报告天津进出口企业名录
  • 怎么看网站pv矿大师德建设网站
  • 宝安做棋牌网站建设哪家便宜网站建设 目的
  • 致力于网站开发维护学什么专业北京网优化seo优化公司
  • 手机网站自动跳转代码没备案的网站可以做淘客
  • 网站后台怎么做莆田做网站公司
  • 高端私人订制网站建设几十张照片合成视频
  • 专业外贸网站网站集约化建设解读
  • 网站 怎么备案阿里云个人网站备案过程全记录
  • 做淘宝那样的网站网站建设调研
  • 旅游网站建站网站编程论文
  • 深圳网站公司注册天津工程造价信息网