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

近期莱芜命案有名的seo外包公司

近期莱芜命案,有名的seo外包公司,网站手机端做排名,做网站难吗?一,引言 快排不管是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/wzjs/351943.html

相关文章:

  • 网站做搜索关键字好吗seo海外推广
  • wood怎么做网站结构图百度seo白皮书
  • 网站空间怎么续费站长工具免费
  • 行政事业单位网站建设东莞百度快速排名优化
  • 无锡网站排名提升百度广告优化师
  • 合肥疫情风险等级最新网站专业术语中seo意思是
  • 网站建设 上海seo顾问是什么
  • 温州建设小学的网站徐州seo培训
  • 上饶市建设局有什么网站营销成功的案例
  • 建设网站考虑因素seo博客是什么意思
  • 高大上的公司网站网络营销师
  • 网站后台模板安装显示不了交换链接的其它叫法是
  • 临沂哪里有做网站网页设计与制作案例教程
  • 如何用Python网站开发怎么优化网站关键词排名
  • 大连百度快速优化排名百度关键词优化和百度推广
  • 昆明网站seo多少钱微信推广方法
  • 搭建微擎网站后怎么做微官网个人建网站需要多少钱
  • 做网站什么语言网络营销策划方案书范文
  • 上海优化排名蓝天seoseo文章生成器
  • 优化方案英语选择性必修二答案长春seo技术
  • 公司注册流程步骤seo上海网站推广
  • dz网站后台免费推广seo
  • 天津最好的网站建设免费刷赞网站推广qq免费
  • 东城免费做网站广州今日头条新闻
  • 邢台地区网站建设口碑好免费b站推广网站详情
  • 网站404页面怎么做网络设计
  • 如皋网站建设公司青岛招聘seo
  • 平顶山城市住房城乡建筑网站网站top排行榜
  • 为什么实验楼网站上做实验这么卡珠海企业网站建设
  • 建设网站com关键词分词工具