为什么随机选择算法在 Array[low] 时返回元素(低 === 高)
Why does the Randomized-Select algorithm return the element at Array[low] when (low === high)?
有人可以向我解释为什么算法在第 4 行**if
情况为真时返回array[low]
元素。如果partition
从pivot+1 to high
在子数组的更大一侧递归到1的长度,那么order
就不存在了吗?
function randomizedSelect(array, low, high, order) {
var pivot, count;
if (low === high) { **
return array[low]; **
}
pivot = partition(array, low, high);
count = pivot - low + 1;
if (count === order) {
return array[pivot];
} else if (order < count) {
return randomizedSelect(array, low, pivot-1, order);
} else {
return randomizedSelect(array, pivot+1, high, order - count);
}
}
随机选择算法所做的是从位于索引low
到high
之间的数组中选择一个数字。如果索引 low
和 high
之间存在超过 1 个数字,则它将跳过if condition
并进入分区。但是,这里的第 4 行是边缘情况,其中低和高之间只存在一个数字,即low
和high
基本相同。所以,我们可以返回任何东西,即使你return array[high]
,结果也会和它是一样的索引(数字)。希望这可能对您有所帮助。
相关文章:
- react-让一个元素返回两个相邻的<tr>标签
- Javascript可见元素返回未定义
- 如果循环中至少有一个元素返回 false,如何将变量设置为 false
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- jQuery mMenu如何通过单击某些元素返回到上一节
- Ajax 元素返回完整的 html 代码
- Javascript:计算每个表的表行数,并向相应的元素返回一个值
- 激活 .stop() 后,将元素返回到其起始位置
- 访问 iFrame 中的元素返回空值
- Knockout.js 从 observableArray 中提取元素返回 undefined
- 获取 0 的文档元素返回什么
- scrollTop为javascript中的所有文档元素返回0,但滚动事件在body标记上触发
- 从Ajax生成的DOM元素返回id
- 如何在交换后将列表元素返回到其原始样式
- 文本元素返回"undefined"
- 从数组中获取随机元素返回相同的元素
- 从聚合物元素返回简单值
- React:将新插入的子元素返回给父元素以更新状态
- 元素返回NaN作为宽度
- 新添加的DOM元素返回null