diff --git a/docs/chapter_searching/binary_search.md b/docs/chapter_searching/binary_search.md index 4cb31e2ee..a804aa166 100755 --- a/docs/chapter_searching/binary_search.md +++ b/docs/chapter_searching/binary_search.md @@ -340,7 +340,7 @@ comments: true ## 10.1.1   区间表示方法 -除了上述双闭区间外,常见的区间表示还有“左闭右开”区间,定义为 $[0, n)$ ,即左边界包含自身,右边界不包含自身。在该表示下,区间 $[i, j]$ 在 $i = j$ 时为空。 +除了上述双闭区间外,常见的区间表示还有“左闭右开”区间,定义为 $[0, n)$ ,即左边界包含自身,右边界不包含自身。在该表示下,区间 $[i, j)$ 在 $i = j$ 时为空。 我们可以基于该表示实现具有相同功能的二分查找算法: diff --git a/docs/chapter_sorting/bubble_sort.md b/docs/chapter_sorting/bubble_sort.md index 3f531a248..a4e1c627b 100755 --- a/docs/chapter_sorting/bubble_sort.md +++ b/docs/chapter_sorting/bubble_sort.md @@ -242,7 +242,7 @@ comments: true /* 冒泡排序 */ void bubbleSort(int nums[], int size) { // 外循环:未排序区间为 [0, i] - for (int i = 0; i < size - 1; i++) { + for (int i = size - 1; i > 0; i--) { // 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端 for (int j = 0; j < size - 1 - i; j++) { if (nums[j] > nums[j + 1]) { @@ -515,7 +515,7 @@ comments: true /* 冒泡排序(标志优化)*/ void bubbleSortWithFlag(int nums[], int size) { // 外循环:未排序区间为 [0, i] - for (int i = 0; i < size - 1; i++) { + for (int i = size - 1; i > 0; i--) { bool flag = false; // 内循环:将未排序区间 [0, i] 中的最大元素交换至该区间的最右端 for (int j = 0; j < size - 1 - i; j++) { diff --git a/docs/chapter_sorting/radix_sort.md b/docs/chapter_sorting/radix_sort.md index 60250843a..5a2086a88 100644 --- a/docs/chapter_sorting/radix_sort.md +++ b/docs/chapter_sorting/radix_sort.md @@ -694,4 +694,4 @@ $$ - **时间复杂度 $O(nk)$**:设数据量为 $n$、数据为 $d$ 进制、最大位数为 $k$ ,则对某一位执行计数排序使用 $O(n + d)$ 时间,排序所有 $k$ 位使用 $O((n + d)k)$ 时间。通常情况下,$d$ 和 $k$ 都相对较小,时间复杂度趋向 $O(n)$ 。 - **空间复杂度 $O(n + d)$、非原地排序**:与计数排序相同,基数排序需要借助长度为 $n$ 和 $d$ 的数组 `res` 和 `counter` 。 -- **稳定排序**:与计数排序相同。 +- **稳定排序**:当计数排序稳定时,基数排序也稳定;当计数排序不稳定时,基数排序无法保证得到正确的排序结果。