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

公司网站 优帮云用网站做自我介绍ppt

公司网站 优帮云,用网站做自我介绍ppt,内力网站建设,企业网站开发创意一,引言 快排不管是hoare法还是指针法以及挖坑法,最终都是利用函数递归进行实现的,但是只要是函数递归就会有栈溢出的风险,为此本篇文章讲解快排的非递归法。 二,代码逻辑 首先要了解为什么会使用递归进行调用&…

一,引言

快排不管是hoare法还是指针法以及挖坑法,最终都是利用函数递归进行实现的,但是只要是函数递归就会有栈溢出的风险,为此本篇文章讲解快排的非递归法。

二,代码逻辑

首先要了解为什么会使用递归进行调用,递归调用将大问题进行细分,细分成相同的小问题,依次往复,而对于快排来说,每次的单趟排序的逻辑都是一致的,不一致的仅仅的传入的参数有所不同,为此我们要思考可不可以通过一个数据结构去记录需要的两个参数,需要用到的时候取出来,之后将新的参数再次存进去。进而来依次循环,变相来实现递归的效果。

为此进行引用数据结构----栈,通过栈来存储需要的数据。下面举个例子:

这是零到九,十个数据,假设每次单趟排序经过调整后key都是中间位置。

第一次分组:[0-----4],[5],[6-------9]

如果是递归的逻辑[0------4],[6-------9]分别进行递归函数,但是如果想要走循环就需要将0和4,6和9存起来。如图:

第一次将0和9取出进行如上分组:之后继续进行存储如图:

第二次分组:将0和4取出经行单趟排序:key==2分成[0----1]和[3------4]两组继续存储:
如图:

第三次分组:将0和1取出进行单趟排序:key==0分成[0-----0],[1------1]因为只有一个数据已经是有序的,所以不进行进行存储。

第四次分组:将3和4取出依次类推,直到栈空间为空,则循环结束,排序结束。 

三,代码实现

void QuickSortNo_Re(int* p, int left, int right)
{Stack* m = (Stack*)malloc(sizeof(Stack));StackInit(m);StackPush(m, right);StackPush(m, left);while (StackEmpty(m) == 0){int begin = StackTop(m);StackPop(m);int begin1 = begin;int end = StackTop(m);int end1 = end;StackPop(m);int keys = begin;while (begin != end){while ((p[keys] <= p[end]) && begin != end){end--;}while ((p[keys] >= p[begin]) && begin != end){begin++;}swap(&p[begin], &p[end]);}swap(&p[begin], &p[keys]);keys = begin;if (end1 > keys + 1){StackPush(m, end1);StackPush(m, keys + 1);}if (begin1 < keys-1){StackPush(m, keys - 1);StackPush(m, begin1);}}
}

代码有点长,这里具体解释一下:

这里面的栈的所有引用在栈一章中都有讲解,这里的单趟排序和hoare法一致。需要注意几个点:
1,注意栈是后进先出的数据结构,所以说先进行数组尾部的入栈之后再是数据头部的入栈。 

2,当获取栈顶数据时,要记得获取一个数据后进行Pop操作,以防止获取同一个数据。

3,要多加两个变量进行标记,每次进行这个数据段的头和尾,遗忘之再排序过程中会出现丢失现象。

4,在进行判断是否入栈操作时要记得进行分别判断,具体出两段数据段是不一致的。

四,总结

快排作为非常具有实践意义的算法,熟练掌握各种方法是很重要,希望同学们多加练习都能熟练掌握。

http://www.dtcms.com/a/538918.html

相关文章:

  • 西安成品网站建设怎么自己制作一个网站的书源
  • 网站内做动图大连城市建设网站
  • 郑州网站seo诊断网站开发逻辑
  • django企业网站开发实例少儿编程课有没有必要学
  • 辽宁省建设厅投诉网站深圳网页设计培训多少钱
  • 手机网站用什么做的网站ie不兼容
  • 网站怎么做精准引流logo在线设计软件免费版
  • 提供邯郸移动网站建设网站加入搜索引擎怎么做
  • 网页游戏网站哪个最好wordpress熊掌号百度主动提交
  • 做100个垂直网站最新域名解析网站
  • 网站排名alexa长沙点梦网站建设
  • 玉环住房与城乡建设规划局网站深圳网站建设深圳网络公司
  • 做宾馆网站文字网址生成器
  • 六安网站推广模板建站和仿站
  • 惠城东莞网站建设WordPress托管如果使用插件
  • 建站系统源码下载免费代理ip的网站
  • 南宁定制网站制作电话php 网站开发模式
  • wordpress怎么关注站点电商网站开发过程是什么
  • 网站设计的介绍模板小程序开发平台的设计是实现
  • app与网站开发的区别wordpress 淘宝客赚钱
  • 房地产中介网站建设微信软件
  • 泰州网站建设方案优化一级做a爱免费网站
  • 微信网站建站平台数码产品网站模板
  • 思创医惠网站建设龙之向导外贸官方网站
  • 网站数据库 权限设计首页关键词排名优化
  • 免费域名申请网站大全南昌优化网站分析
  • 网站建设费如何记账有限公司怎么纳税
  • 柳州公积金网站wordpress延迟加载插件
  • 做国外网站调查挣取零花钱北京房产网站建设
  • 阳城网站建设写作的网站哪个好