关于快速排序
今天见到了好多种快速排序···感觉和我想象中的都不一样。
Haskell 实现
先放一种快排的 Haskell
实现,简单易懂:
1 | qsort :: Int[] -> Int[] |
核心思想
我认为快速排序的核心思想是分而治之,将数组头去除后的部分以数组头为界进行分类,然后将分类后的小数组再次去头然后分类处理,以此循环,直到数组长度为 1 。
逻辑顺序
- 取数组首元素 key
- 从第二个元素开始遍历数组
- 比 key 小的元素放进数组 left
- 比 key 大的元素放进数组 right
- 将 left 与 right 各自排序(递归)
- 连接 left + key + right
1 | [9, 0, 3, 2, 6, 7, 6] |