快速排序

基本原理


选取一个数,把比它小的放在左边,比它大的放在右边,再对左右每个子数组做相同操作,直至操作元素个数为1.

算法改进



每一趟排序:

下标|0|1|2|3|4|5|6|7|8|9|说明|伪代码
-|-|-|-
|6|2|7|3|1|8|9|4|5|0|key = [0]6|
|0|2|7|3|1|8|9|4|5|6|从右侧找第一个小于key的[9]0,互换|for(;[j]>=key;j--)
|0|2|6|3|1|8|9|4|5|7|从左侧找第一个大于key的[2]7,互换|
|0|2|5|3|1|8|9|4|6|7|从右侧找第一个小于key的[8]5,互换|
|0|2|5|3|1|6|9|4|8|7|从左侧找第一个大于key的[5]8,互换|
|0|2|5|3|1|4|9|6|8|7|从右侧找第一个小于key的[7]4,互换|
|0|2|5|3|1|4|6|9|8|7|从左侧找第一个大于key的[6]9,互换|

每趟排序的

参考


白话经典算法系列之六 快速排序 快速搞定
知无涯之std::sort源码剖析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容