From caa775c53d3560dcf89dbddcdb55fe193c22967d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=B9=E5=9C=86?= <374072213@qq.com> Date: Thu, 19 Jan 2023 21:06:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BA=8C=E5=88=86=E6=9F=A5=E6=89=BE?= =?UTF-8?q?=EF=BC=8C=E5=B7=A6=E9=97=AD=E5=8F=B3=E5=BC=80=E5=8C=BA=E9=97=B4?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=B8=AD=EF=BC=8C=E6=B3=A8=E9=87=8A=E5=8C=BA?= =?UTF-8?q?=E9=97=B4=E8=8C=83=E5=9B=B4=E5=8F=B3=E4=BE=A7=E7=AC=A6=E5=8F=B7?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E6=98=AF)=E8=80=8C=E4=B8=8D=E5=BA=94?= =?UTF-8?q?=E8=AF=A5=E6=98=AF]=20(#286)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 二分查找,左闭右开区间实现中,注释区间范围右侧符号应该是)而不应该是] 我觉得需要改一下,这样更好理解 * fix: 二分查找,代码注释中 ] -> ) --- .../chapter_searching/binary_search.ts | 4 +-- docs/chapter_searching/binary_search.md | 28 +++++++++---------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/codes/typescript/chapter_searching/binary_search.ts b/codes/typescript/chapter_searching/binary_search.ts index 2a03994b4..74a87ff6c 100644 --- a/codes/typescript/chapter_searching/binary_search.ts +++ b/codes/typescript/chapter_searching/binary_search.ts @@ -29,9 +29,9 @@ const binarySearch1 = function (nums: number[], target: number): number { // 循环,当搜索区间为空时跳出(当 i = j 时为空) while (i < j) { const m = Math.floor(i + (j - i) / 2); // 计算中点索引 m - if (nums[m] < target) { // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) { // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - } else if (nums[m] > target) { // 此情况说明 target 在区间 [i, m] 中 + } else if (nums[m] > target) { // 此情况说明 target 在区间 [i, m) 中 j = m; } else { // 找到目标元素,返回其索引 return m; diff --git a/docs/chapter_searching/binary_search.md b/docs/chapter_searching/binary_search.md index 468570c0f..9c0485614 100644 --- a/docs/chapter_searching/binary_search.md +++ b/docs/chapter_searching/binary_search.md @@ -230,9 +230,9 @@ $$ // 循环,当搜索区间为空时跳出(当 i = j 时为空) while (i < j) { int m = (i + j) / 2; // 计算中点索引 m - if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - else if (nums[m] > target) // 此情况说明 target 在区间 [i, m] 中 + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m) 中 j = m; else // 找到目标元素,返回其索引 return m; @@ -252,9 +252,9 @@ $$ // 循环,当搜索区间为空时跳出(当 i = j 时为空) while (i < j) { int m = (i + j) / 2; // 计算中点索引 m - if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - else if (nums[m] > target) // 此情况说明 target 在区间 [i, m] 中 + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m) 中 j = m; else // 找到目标元素,返回其索引 return m; @@ -274,9 +274,9 @@ $$ # 循环,当搜索区间为空时跳出(当 i = j 时为空) while i < j: m = (i + j) // 2 # 计算中点索引 m - if nums[m] < target: # 此情况说明 target 在区间 [m+1, j] 中 + if nums[m] < target: # 此情况说明 target 在区间 [m+1, j) 中 i = m + 1 - elif nums[m] > target: # 此情况说明 target 在区间 [i, m] 中 + elif nums[m] > target: # 此情况说明 target 在区间 [i, m) 中 j = m else: # 找到目标元素,返回其索引 return m @@ -293,9 +293,9 @@ $$ // 循环,当搜索区间为空时跳出(当 i = j 时为空) for i < j { m := (i + j) / 2 // 计算中点索引 m - if nums[m] < target { // 此情况说明 target 在区间 [m+1, j] 中 + if nums[m] < target { // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1 - } else if nums[m] > target { // 此情况说明 target 在区间 [i, m] 中 + } else if nums[m] > target { // 此情况说明 target 在区间 [i, m) 中 j = m } else { // 找到目标元素,返回其索引 return m @@ -316,9 +316,9 @@ $$ // 循环,当搜索区间为空时跳出(当 i = j 时为空) while (i < j) { let m = parseInt((i + j) / 2); // 计算中点索引 m ,在 JS 中需使用 parseInt 函数取整 - if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - else if (nums[m] > target) // 此情况说明 target 在区间 [i, m] 中 + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m) 中 j = m; else // 找到目标元素,返回其索引 return m; @@ -338,9 +338,9 @@ $$ // 循环,当搜索区间为空时跳出(当 i = j 时为空) while (i < j) { const m = Math.floor(i + (j - i) / 2); // 计算中点索引 m - if (nums[m] < target) { // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) { // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - } else if (nums[m] > target) { // 此情况说明 target 在区间 [i, m] 中 + } else if (nums[m] > target) { // 此情况说明 target 在区间 [i, m) 中 j = m; } else { // 找到目标元素,返回其索引 return m; @@ -368,9 +368,9 @@ $$ while (i < j) { int m = (i + j) / 2; // 计算中点索引 m - if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j] 中 + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j) 中 i = m + 1; - else if (nums[m] > target) // 此情况说明 target 在区间 [i, m] 中 + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m) 中 j = m; else // 找到目标元素,返回其索引 return m;