伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

讲给对方听的算法--快速排序(快速选择)

来源:本站原创 浏览:72次 时间:2022-11-28

有时候,想起来三四年前抱着红色的算法书籍,觉得这是自己的信仰,自己也觉得非常开心,编程都有了底气。但是也是看完就会忘记,啥也记不住。

如今想象,也是看过很多次,也听过很多人说过,如今也是忘了。挺无奈。

有一天早起,听了一下快速排序。

基本思路:

在一个序列中,只有整数,8,2,5,7,4

第一步,选择一个基准,比如选择第一个,8(怎么选择也是可以优化,优化不影响算法思路)

第二步,空出8的位置,因为我们要给8找到序列中正确的顺序位置(因为选择第一位,可以从最后往前比较,不会重复)

第三步,将队列中的数字与8比较,小的放在左边,大的放在右边(操作形式是)
3.1-->假如从右边(从左边会重复混乱一点)开始,数组下标走到最后一位,4< 8,那么4填到空位,此时序列为(?)
答案:4257()
3.2-->数组下标走到倒数第二位,7< 8,不用动,已经在左边了。序列是?
答案是4257()

依次继续往后,就可以写出来。
依次序列是5< 8,, 4257()
2 < 8, 4257()
4 < 8, 4257()
到达第一位了,
说明8的序列位置找到了,就是最后一个。序列就是
42578

第三步,操作完成
第四步,继续选择第一位,4作为基准,重复第三步,序列依次是
判断是不是比较过的,8跳过,7>4,不动,序列是()2578
5>4不动,序列是()2578
2<4,交换,2()578,已经到最前,说明4的序列位置找到了,就是第二
24578

第五步,选择按顺序选择下一位基准数,2,循环之前的处理

这就是基本思路。

延伸出来的就是,快速选择。
选择这个序列第K个数字(按照顺序,排第几的数)

情景:比如说上面的序列8,2,5,7,4,我想找到排第三位的数字,从小到大排。
答案大家都知道,应该算是5
思路:基准值排完之后,左边都是比他小的 ,即使无序也不重要,就知道它是第几位。
所以查找第k个数,就是找前面有k-1个数的位置上该有的基准数。

找到的过程如下:
第一步,依旧是按照快速排序,选择一个基准数(基准数的选择还是可以优化)
我们依旧选择8,借鉴之前:
说明8的序列位置找到了,就是最后一个。序列就是
42578
第二步,比较8的位数与目标位数。
比较目标,3<5,所以抛弃基准数的右边,从前面四位再快速排序。(找这个序列排第三位的(这里也好好理解一下下))
剩余的序列是4257
第三步,选择一个基准数,假如依旧从开头选,4,
经过比较,借鉴之前:
说明4的序列位置找到了,就是第二个。序列就是
2457
第四步,比较4的位数与目标位数
比较目标,3> 2,所以抛弃基准数的左边,从后面两位再快速排序。
(找这个序列排第(3-2=1)1位的)(这里好好理解一下)
第五步,57,依旧选择开头,5,从最后一位比较,7>5,不动,是最前一个数,
说明5的序列位置找到了,就是第1个。序列就是
57

                此刻就快速选到了第三位的数字就是5,结束。                这样我们就描述完了快速排序算法的思想,也顺道延伸了一下快速选择。                有缘下次再见。

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net