bin_insertion_sort.rs 中存在usize类型 Attempt to subtract with overflow 的问题
hechengyuhui opened this issue · comments
FF9E58 commented
bin_insertion_sort.rs 17行开始的以下代码段中
// 二分法找到 temp 的位置
while left <= right {
mid = (left + right) >> 1;
if temp < nums[mid] {
right = mid - 1;
} else {
left = mid + 1;
}
}
mid
为 usize
类型,若待排序数组为 [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;
}
}
Shieber commented
已修复,多谢!