Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การคำนวณ H-index ของนักวิจัยจากอาร์เรย์การอ้างอิงใน JavaScript

บทความนี้สาธิตการคำนวณ 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)