排序算法复习之一趟快速排序算法:为什么说关键字所占的位置是多余的
来源:互联网 发布:mac vim 修改只读文件 编辑:程序博客网 时间:2024/06/06 01:23
思路:
49 38 65 97 76 13 27
先说自己的想法:
首先看38,发现38比49小,所以换位:
38 49 65 97 76 13 27
这个时候发现65,按理说应该把65放最后面,或者说与27交换位置,变为:
38 49 27 97 76 13 65
这个时候,发现27,27比49小,所以交换位置为:
38 27 49 97 76 13 65
这个时候发现97,我们换97与后面比49小的。
38 27 49 13 76 97 65
这个时候发现13,我们换:
38 27 13 49 76 97 65
后面没有比49 小的了。终止。
我们发现:
每次我们总是从前面找一个比49大的,,从后面找一个比49小的,然后调换他们的位置。
我们发现:这个49所占的位置,是多余的,这个位置可以用来进行交换高低位:
再次变为如下过程:
49 38 65 97 76 13 27
先从后往前找:
找到一个27,比49 小,序列变为:
27 38 65 97 76 13 27
然后从前往后找:
找到一个65,比49大,这个时候把最后一个变为65:
27 38 65 97 76 13 65
关键之处就在于:黄色字所表示的地方正是原来49所占的位置。
再从后往前找。。再找一个比49小的,那就是13:
变为:
27 38 13 97 76 13 65
再从前往后找:
找到97比49大,那么,变为:
27 38 13 97 76 97 65
再从后往前找,一直找到橙色97为止:也就是low的指向:
直到 low=high
这就是快速排序一趟,这个时候我们将橙色97置为49,函数返回它的位置作为分割点。设为partitio
(low,partition-1) 和 (partition,high)两个区间。
- 排序算法复习之一趟快速排序算法:为什么说关键字所占的位置是多余的
- 复习一下简单的排序算法之 快速排序
- 算法复习之快速排序
- 快速排序算法是不稳定的算法
- 快速排序算法复习
- 算法复习--快速排序
- 算法复习--快速排序
- 复习----快速排序算法
- 各种排序算法的复习
- 复习----常见的排序算法
- 算法复习——风骚的快速排序
- 快速排序算法的时间复杂度为什么是O(NlogN),还有O(N^2)
- 删除多余备份文件 保留最近的10个,顺便复习下排序算法
- 排序算法复习(1)-- 快速排序
- 基础算法的总结之快速排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 经典排序算法的汇总之快速排序
- string :操作总结
- git 命令
- Java基础需要都搞懂的名词
- python爬虫之登录豆瓣
- android MediaRecorder录音详解
- 排序算法复习之一趟快速排序算法:为什么说关键字所占的位置是多余的
- 我所理解的【实例.方法()/instance.method()/类.方法(实例)/class.method(instance)】
- jQuery提示通知插件jBox弹出iframe的方法总结
- java基础加强-注解(Annotation)
- 标准库里面的思想
- 条形码识别项目中C++以及OpenCV基础知识
- OpenGL拾取操作流程
- AngularJS学习:构建小型angular项目
- 2017Astar资格赛1002 度度熊的王国战略