บทความนี้สาธิตการคำนวณ H-index: ค่า h ที่มี h papers ที่ถูกอ้างอิงอย่างน้อย h ครั้ง และอีก N-h papers ถูกอ้างอิงไม่เกิน h ครั้ง
ตัวอย่าง
arr = [1, 6, 3, 0, 5] // 3 papers มี citations >= 3 (6,3,5) และ 2 papers <= 3 (1,0) -> h-index = 3
ตัวอย่างโค้ด
const arr = [1, 6, 3, 0, 5];
const findHIndex = (arr = []) => {
let possible = [];
let { length: len } = arr;
if (len === 0) {
return 0;
}
possible.length = len + 2;
possible = possible.join('-').split('').map(() => 0);
for (let i = 0; i < len; i++) {
let val = arr[i];
let ind = val > len ? len : val;
possible[ind] += 1;
}
let result = 0;
for (let k = len; k >= 0; k--) {
result += possible[k];
if (result >= k) {
return k;
}
}
};
console.log(findHIndex(arr));
ผลลัพธ์
3
คำอธิบาย
ใช้ counting sort approach: นับจำนวน papers ที่มี citations = k เก็บใน possible[k] (citation > n นับที่ n)
จากนั้นสะสมจาก k = n ลงมา หา k แรกที่ cumulative sum >= k
Time: O(n), Space: O(n)