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

หาค่ากลางของ 3 ตัวเลข (Median of Three) - JavaScript

หาค่ากลาง (Median) ของ 3 ตัวเลขโดยใช้การเปรียบเทียบน้อยที่สุด (3 ครั้ง)

ตัวอย่าง

34, 45, 12 → Median = 34

ตัวอย่างโค้ด (ใช้คุณสมบัติเครื่องหมาย)

const middleOfThree = (a, b, c) => {
  const x = a - b;
  const y = b - c;
  const z = a - c;
  
  if (x * y > 0) return b;      // b อยู่กลาง
  else if (x * z > 0) return c; // c อยู่กลาง
  else return a;                 // a อยู่กลาง
};

console.log(middleOfThree(34, 45, 12));

ผลลัพธ์

34

วิธีเข้าใจง่ายกว่า (Sort)

const middleOfThree = (a, b, c) => 
  [a, b, c].sort((x, y) => x - y)[1];

Sort 3 elements เร็วพอ (O(1) จริงๆ) และอ่านง่ายกว่ามาก

วิธีไม่ใช้ Sort (2-3 Comparisons)

const middleOfThree = (a, b, c) => {
  if ((a > b) !== (a > c)) return a;
  if ((b > a) !== (b > c)) return b;
  return c;
};

ใช้ XOR logic: a เป็นกลางถ้า (a>b) ≠ (a>c) คือ a มากกว่าตัวหนึ่งแต่น้อยกว่าอีกตัว