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

การวัดความเข้มข้นของการสับเปลี่ยนอาร์เรย์ - JavaScript

วัด "ความเข้มข้นของการสับเปลี่ยน" (shuffle intensity) ของอาร์เรย์ โดยพิจารณาจากจำนวนคู่ที่ไม่เรียงลำดับ (ไม่ใช่ ascending order)

นิยาม

  • 100% shuffled: ไม่มีคู่ใดเรียง ascending (ทุกคู่ลดลง)
  • 0% shuffled: ทุกคู่เรียง ascending

ตัวอย่างโค้ด

const arr = [4, 23, 1, 23, 35, 78, 4, 45, 7, 34, 7];

const shuffleIntensity = arr => {
  let inCorrectPairs = 0;
  if (arr.length <= 1) return 0;

  for (let i = 0; i < arr.length - 1; i++) {
    // นับคู่ที่ไม่เรียง ascending (ค่าลดลง)
    if (arr[i] - arr[i + 1] <= 0) continue;
    inCorrectPairs++;
  }
  return (inCorrectPairs / (arr.length - 1)) * 100;
};

console.log(shuffleIntensity(arr)); // 40

ผลลัพธ์

40

หมายความว่า 40% ของคู่ในอาร์เรย์นี้ไม่เรียง ascending (s shuffled)

ข้อสังเกต: นิยามนี้พิจารณาเฉพาะ "ไม่ใช่ ascending" ไม่ใช่ "สุ่มจริง" อาร์เรย์ที่เรียง descending จะได้ 100%