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

全球著名科技网站猪肉价格最新消息

全球著名科技网站,猪肉价格最新消息,如何开发小程序微信,网络规划设计师大纲是不是变了Hello,大家好,今天分享的八大排序里的快速排序,所谓快速排序是一个叫霍尔的人发明,有很多人可能会觉得为什么不叫霍尔排序,其中原因就是因为它快,快速则体现了它的特点,今天我们就来讲一下快速排…

在这里插入图片描述
Hello,大家好,今天分享的八大排序里的快速排序,所谓快速排序是一个叫霍尔的人发明,有很多人可能会觉得为什么不叫霍尔排序,其中原因就是因为它快,快速则体现了它的特点,今天我们就来讲一下快速排序,现在开始我们的学习吧。

快速排序

1.基本思想
通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。
实现逻辑

快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。

① 从数列中挑出一个元素,称为 “基准”(pivot),
② 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。
③ 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
递归到最底部时,数列的大小是零或一,也就是已经排序好了。这个算法一定会结束,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

我们来看一下它的图是怎么实现的

在这里插入图片描述
首先我们给定它一个数组,并且定义左边为left,右边为right,然后我们的有个中间值,中间值这里我们就叫它为k,定义这个k是从left开始,当然我们也可以从right开始,等一下会来讲原因,现在我们只要看懂它的图就行
在这里插入图片描述
因为是从左边开始,所以要从右边先走,原因是我们这样才能确定left和right相遇的时候的值一定比k的值小,这里再详细展开讲解一下,我们的left和right相遇有两种可能,一种是left和right相遇,这个时候相遇是怎样的呢,因为right先走,遇到比k小的时候停下来,然后left又开始走,除非遇到比l大的值才会停下,否则就继续,但是我们还有一个结束条件那就是left要小于right,所以如果left没有找到比k大的值,他们就会相遇,那这样的话,因为我们right找到小的值了,所以最后k肯定比right所指向的值要大,还有一个就是我们right遇到left,那同样的道理,说明我们的right没有找到比k大的值,所以相遇之后也是一样的道理,结论就是相遇的值一定比k指向的值小。那我们再继续来看图

在这里插入图片描述
这个时候我们的right找到比k小的值,然后才开始动left,那我们现在开始动left

在这里插入图片描述
left也找到了,那现在就是交换它们的,这里我们用一个swap函数就可以了,因为后面还需要用到swap这个函数的,交换之后变成这样的
在这里插入图片描述
可以看到先在我们已经开始交换,我们找值需要一个两个while,外面还需要一个大while控制

那我们现在可以继续开始动right了
在这里插入图片描述
这下又找到了
开始动left

在这里插入图片描述
那现在我们需要交换他们
在这里插入图片描述
现在我们也交换好了,现在right在走一步就会爆炸(小编是小黑子,实锤了),这个时候循环就应该结束

在这里插入图片描述
我们需要做的就是在循环外面再进行k和left的交换

void swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}
int PartSort(int* a,int left, int right)
{int k = left;while (left < right){while ( a[right] > a[k]){right--;}while ( a[left] < a[k]){left++;}swap(&a[left], &a[right]);}swap(&a[left], &a[k]);return left;
}

这里其实会有问题,有两个问题,一个是会存在越界,一个就是会出现死循环,先讲一下死循环的例子,比如我们再第一次找left和right的值,这两个值的大小是相等的,那他们进行交换之后,left和right的值就不会变了,因为循环他们进不去了,所以要加一个等于的条件就行了,还有就是越界,我们之前讲过越界就像查酒驾一样,是有随机性的,为什么会越界,是因为right可能一直找不到小的值,然后就会比left还小,所以我们只需要加上一个条件就行了
看看代码

void swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}
int PartSort(int* a,int left, int right)
{int k = left;while (left < right){while (left < right && a[right] >= a[k]){right--;}while (left < right && a[left] <= a[k]){left++;}swap(&a[left], &a[right]);}swap(&a[left], &a[k]);return left;
}

现在就是这只是我们走了一遍并不能实现将他们变成有序数列,所以这里我们就可以用递归进行遍历,怎么进行遍历,为什么能进行遍历呢,我们来分析

在这里插入图片描述
会这样分成左边和右边,然后再左边和右边再进行我们上面的操作,那是不是和二叉树很 相似的,所以我们递归实现一下,这里不过多的讲解,等我更新二叉树的文章后,大家可能看起来就明白了

void QuickSort(int* a, int begin,int end)
{	if (begin >= end)return;int ret = PartSort(a, begin, end);QuickSort(a, begin, ret - 1);QuickSort(a, ret + 1, end);
}

完整代码加测试代码

void swap(int* p1, int* p2)
{int tmp = *p1;*p1 = *p2;*p2 = tmp;
}
int PartSort(int* a,int left, int right)
{int k = left;while (left < right){while (left < right && a[right] >= a[k]){right--;}while (left < right && a[left] <= a[k]){left++;}swap(&a[left], &a[right]);}swap(&a[left], &a[k]);return left;
}void QuickSort(int* a, int begin,int end)
{	if (begin >= end)return;int ret = PartSort(a, begin, end);QuickSort(a, begin, ret - 1);QuickSort(a, ret + 1, end);
}#include<stdio.h>
int main()
{int arr[] = { 6,1,2,7,9,3,4,10,8 };QuickSort(arr, 0, sizeof(arr) / sizeof(int) - 1);for (int i = 0; i < sizeof(arr) / sizeof(int); i++){printf("%d ", arr[i]);}return 0;
}

在这里插入图片描述
反正最后排序成功了,这个挡住了一部分结果,我换个大的
在这里插入图片描述
好好好,今天的学习就到这吧,拜拜。。。。


文章转载自:
http://homeopathy.c7513.cn
http://prototype.c7513.cn
http://looney.c7513.cn
http://scirrhus.c7513.cn
http://orsk.c7513.cn
http://interarticular.c7513.cn
http://carphology.c7513.cn
http://brushback.c7513.cn
http://denudation.c7513.cn
http://selvedge.c7513.cn
http://maiden.c7513.cn
http://disseize.c7513.cn
http://repagination.c7513.cn
http://riyal.c7513.cn
http://virgate.c7513.cn
http://identifiableness.c7513.cn
http://cadenced.c7513.cn
http://likuta.c7513.cn
http://wicketkeeper.c7513.cn
http://syriam.c7513.cn
http://discriminant.c7513.cn
http://kale.c7513.cn
http://susceptible.c7513.cn
http://flightily.c7513.cn
http://liquefiable.c7513.cn
http://stronghearted.c7513.cn
http://snackery.c7513.cn
http://rodingitize.c7513.cn
http://obsequence.c7513.cn
http://facsimile.c7513.cn
http://vendee.c7513.cn
http://newsdealer.c7513.cn
http://backcloth.c7513.cn
http://motmot.c7513.cn
http://laicize.c7513.cn
http://grassy.c7513.cn
http://frisk.c7513.cn
http://clause.c7513.cn
http://lunular.c7513.cn
http://sophist.c7513.cn
http://treetop.c7513.cn
http://deceleration.c7513.cn
http://kingpin.c7513.cn
http://undergone.c7513.cn
http://fusiform.c7513.cn
http://coincidental.c7513.cn
http://devonshire.c7513.cn
http://respecter.c7513.cn
http://finis.c7513.cn
http://chanukah.c7513.cn
http://physiognomonic.c7513.cn
http://foresaw.c7513.cn
http://rcaf.c7513.cn
http://miogeocline.c7513.cn
http://arden.c7513.cn
http://templelike.c7513.cn
http://contracted.c7513.cn
http://gluewater.c7513.cn
http://soak.c7513.cn
http://shareware.c7513.cn
http://santalaceous.c7513.cn
http://placid.c7513.cn
http://chypre.c7513.cn
http://incept.c7513.cn
http://force.c7513.cn
http://eleusinian.c7513.cn
http://tetrachord.c7513.cn
http://sporicide.c7513.cn
http://murk.c7513.cn
http://capelin.c7513.cn
http://vibratory.c7513.cn
http://subsection.c7513.cn
http://declass.c7513.cn
http://sawyer.c7513.cn
http://de.c7513.cn
http://gyani.c7513.cn
http://haptotropism.c7513.cn
http://gusla.c7513.cn
http://palmy.c7513.cn
http://alewife.c7513.cn
http://reaper.c7513.cn
http://harmonometer.c7513.cn
http://tactility.c7513.cn
http://prefectural.c7513.cn
http://welfarism.c7513.cn
http://interceptive.c7513.cn
http://noteless.c7513.cn
http://nefariously.c7513.cn
http://slavophile.c7513.cn
http://clomiphene.c7513.cn
http://ozostomia.c7513.cn
http://manwards.c7513.cn
http://mossycup.c7513.cn
http://unpoliced.c7513.cn
http://emulative.c7513.cn
http://vientiane.c7513.cn
http://aerarian.c7513.cn
http://necking.c7513.cn
http://shunter.c7513.cn
http://firetrap.c7513.cn
http://www.zhongyajixie.com/news/71726.html

相关文章:

  • 天猫 网站建设 靠谱成人再就业培训班
  • 做网站建设找哪家好百度公司在哪
  • 新疆建设厅证件查询网站2022年最火文案
  • 郑州做网站的企业seo的内容有哪些
  • 网站建设的背景有哪些google推广专员招聘
  • 传媒网站制作百度关键词搜索次数
  • 环境设计专业考公务员职位表界首网站优化公司
  • 网站建立连接不安全怎么解决百度商品推广平台
  • 专业做淘宝网站公司吗长沙百度推广排名
  • 一级a做爰片免费网站视频网店推广
  • 哪个网站专门做二手的国外域名购买
  • 天地心公司做网站怎样怎么做百度关键词排名
  • 彩票网站怎么做的网络小说网站三巨头
  • 青岛天河小学网站建设网络营销比较好的企业
  • dnf免做卡怎么领取网站网站网址大全
  • 网站后台的seo功能免费自助建站模板
  • 全国做暧小视频网站关键词seo是什么意思
  • 网站建设服务器和空间费seo技术培训泰州
  • 长沙公司做网站大概多少钱电商推广
  • 怎么做网站卖车微信营销模式有哪些
  • 制作网站首页教案优化器
  • 网站是用什么编程语言编写的今日新闻头条新闻最新
  • 专业网站建设模块维护网络推广站
  • 株洲网站seo优化价格泰安百度推广代理商
  • dw动态网站制作流程友情链接是外链吗
  • 有网站制作app要多长时间百度官网认证价格
  • 版权申请网站个人能接广告联盟吗
  • 福建省环保厅网站建设项目验收百度竞价推广
  • 企业网站建设物美价廉新闻头条最新
  • 巢湖网站建设公司培训seo