quicksort - Quicksort - 分区伪代码检查索引超出范围?
问题描述
如果我有以下分区函数(伪代码):
PARTITION(A,l,r) {
p = A[r]
i = l – 1, j = r
while(true) {
while(A[++i] < p);
while(A[--j] > p);
if(i < j)
swap(A[i],A[j]);
else
swap(A[i], A[r];
// find and return split point
return i;
}
}
我想我还应该检查 j 是否超出范围(索引 -1)。例如:
21、22、23、24、17
左索引 i 将在元素 21 处停止,因为 21 > 17 (pivot p) 但右索引 j 将变为 -1,因为 24、23、22 和 21 > 17 (pivot p) 所以 A[--j] 会变为 -1 还是不需要索引检查 (<0)?
解决方案
推荐阅读
- java - 来自 CSV 的 LinkedHashMap 未获取所有条目
- bash - 如何使用 bash 函数更改源
- kubernetes - PromQL 指标查询返回的指标不是我想要的
- python - 使用带有列表作为输入参数的 pandas between_time() 函数
- javascript - 如何让多步表单验证为密码工作?
- javascript - 是否包括与对象数组一起使用?
- angular - Angular 2 - 通过复选框选择
- javascript - 在两个不同的点击事件之间传递数组值
- python - 在 jupyter notebook 中使用 .so python 库进行多处理
- javascript - 根据JS中的另一个数组对Array的一部分进行排序