QMHTMY / RustBook

A book about Rust Data Structures and Algorithms.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

bin_insertion_sort.rs 中存在usize类型 Attempt to subtract with overflow 的问题

hechengyuhui opened this issue · comments

bin_insertion_sort.rs 17行开始的以下代码段中

// 二分法找到 temp 的位置
        while left <= right {
            mid = (left + right) >> 1;
            if temp < nums[mid] {
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }

midusize 类型,若待排序数组为 [2,3,1,4] ,则会出现 0 usize - 1 的情况,造成程序 panic ,加上一段对 mid 为 0 的处理就好,代码如下

while left <= right {
            mid = (left + right) >> 1;
            if temp < nums[mid] {
                if mid == 0 {break;}
                right = mid - 1;
            } else {
                left = mid + 1;
            }
        }

已修复,多谢!