排序算法- H指数
hello 大家好!今天开写一个新章节,每一天一道算法题。让我们一起来学习算法思维吧!
/**
* 使用排序法计算 h 指数
* @param {number[]} citations - 论文引用次数数组
* @return {number} - 计算得到的 h 指数
*/
function hIndex(citations) {
// 首先对数组进行降序排序
citations.sort((a, b) => b - a);
let h = 0;
// 遍历排序后的数组
for (let i = 0; i < citations.length; i++) {
if (citations[i] >= i + 1) {
// 如果当前论文的引用次数大于等于当前论文的序号加 1
// 说明满足 h 指数的条件,更新 h 指数
h = i + 1;
} else {
// 一旦不满足条件,跳出循环
break;
}
}
return h;
}
代码解释
排序: 将数组 citations 按降序排列,这样引用次数多的论文排在前面。
遍历数组: 对于每个位置 i,判断 citations[i] 是否大于等于 i + 1。如果满足条件,说明至少有 i + 1 篇论文的引用次数大于等于 i + 1,更新 h 指数为 i + 1。
终止条件: 一旦不满足 citations[i] >= i + 1 的条件,说明后续位置也不会满足,跳出循环。
返回结果: 最终返回 h 指数。