From 40fa95e95e80d41974163cf40ce2beb8777632ac Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 25 Oct 2026 19:03:38 +0800 Subject: [PATCH] =?UTF-8?q?Update=20=E7=AE=97=E6=B3=95=20-=20=E6=8E=92?= =?UTF-8?q?=E5=BA=8F.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 补充快速选择中 a[j] 是第 j 小的元素(从 0 开始计数);切分过程的说明与代码保持一致;按 Java 8 文档更新 Arrays.sort() 使用的算法。 --- notes/算法 - 排序.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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,它是归并排序的改进版本。