关于快速选择算法,自己的一点小领悟
来源:互联网 发布:tomcat运行php文件 编辑:程序博客网 时间:2024/06/10 14:47
快速排序算法思想:快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
基准
基准的挑选会影响到算法的性能,一般情况将序列的第一个元素作为基准。
分区算法
设两个指针left和right,一个从左往右扫描,一个从右往左扫描;对于左指针,如果左指针所指的元素的值小于或者等于基准值,那么指针往右移一位,如果大于基准值,则和基准值交换;同理,对于右指针,如果右指针所指的元素的值大于或者等于基准值,那么指针往左移一位,如果小于基准值,则和基准值交换。
举个例子:
(19,15,12,18,21,36,45,10) 以19为基准记录进行快速排序
这里只列举一趟的结果
19 , 15 ,12 ,18 ,21, 36 , 45 ,10 // 从后往前扫描 10比19小,交换
10 , 15, 12,,18,21,36,45,19, 从前往后扫描,21 比19大,交换
10 , 15 , 12 ,18 , 19 ,36, 45, 21 // 19前边都比19小,后边都比19大,一趟比较结束
0 0
- 关于快速选择算法,自己的一点小领悟
- 关于单例设计的一点小领悟
- 关于地址运算的一点领悟
- 新手关于快速排序的领悟
- 关于oop的自己的一点小见识
- 关于一个公司的产品、技术、运营的一点领悟
- iOS关于TableView重用Cell的一点领悟
- 算法实践篇-基于快速排序原理的选择第i小元选择算法
- 对持久层sql语句的高复用性的一点小领悟
- 大学对自己的一点小要求
- 选择我自己的算法
- 选择我自己的算法
- 关于算法的一点思考。。。
- 算法:快速排序以及第k小元素的线性选择算法
- 算法:快速排序以及第k小元素的线性选择算法
- 关于volley的一点自己的理解
- 关于RecyclerView的一点自己的学习体会
- 对iOS中block的一点领悟
- eclipse debug 执行到断点处并没有停下,断点无效问题
- ios的状态栏
- cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
- 【SQL-码农】MSSQl分布式查询
- hybris 电商开发实施客户案例,在线研讨会
- 关于快速选择算法,自己的一点小领悟
- 【BootStrap】--折叠插件
- 学习Javascript闭包(Closure)
- 坐标
- PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题
- MySql 代码收集
- 理解strong与weak)强引用与弱引用转载自《http://blog.sina.com.cn/s/blog_7c8dc2d50101lc08.html》
- jQiery事件
- iOS 封装BaseModel