diff --git a/notes/算法 - 排序.md b/notes/算法 - 排序.md index a92ca45c..771e9918 100644 --- a/notes/算法 - 排序.md +++ b/notes/算法 - 排序.md @@ -273,7 +273,7 @@ public class QuickSort> extends Sort { ### 2. 切分 -取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 +取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。

@@ -345,7 +345,7 @@ public class ThreeWayQuickSort> extends QuickSort { ### 5. 基于切分的快速选择算法 -快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。 +快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组中第 j 小的元素(j 从 0 开始计数)。 可以利用这个特性找出数组的第 k 个元素。 @@ -551,4 +551,4 @@ public class HeapSort> extends Sort { ### 2. Java 的排序算法实现 -Java 主要排序方法为 java.util.Arrays.sort(),对于原始数据类型使用三向切分的快速排序,对于引用类型使用归并排序。 +Java 主要排序方法为 java.util.Arrays.sort(),对于原始数据类型使用双轴快速排序(Dual-Pivot Quicksort),对于引用类型使用 TimSort,它是归并排序的改进版本。