หาค่ากลาง (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 มากกว่าตัวหนึ่งแต่น้อยกว่าอีกตัว