สลับค่าตัวแปรแบบไม่ใช้ temp variable

ถ้ามีโจทย์ให้สลับค่าตัวแปรสองตัว สมมุติว่า x กับ y – คิดว่าวิธีที่คนส่วนใหญ่ใช้ (ผมด้วย) คือการใช้ temporary variable “พัก” ค่าไว้ก่อนแบบนี้:

temp = x;
x = y;
y = temp;

แบบนี้เขาเรียกท่าเบสิค ลองมาดูแบบอื่นที่ไม่ต้องใช้ temp กัน

ใช้บวก ลบ คูณ หาร

x = x + y;
y = x – y;
x = x – y;

สมมุติให้ x = 9, y = 1

x = x + y;
x = 9 + 1 = 10

y = x – y;
y = 10 – 1 = 9

x = x – y;
x = 10 – 9 – 1

สุดท้าย x = 1, y = 9

วิธีนี้ให้ x เป็น temp แบบกลายๆ – คือจับสองค่ามารวมกันแล้วพักไว้ที่ x ก่อน แล้วหักค่า y จะได้ x หักค่า x (y ใหม่) ก็ได้ y

เปลี่ยนเป็นคูณ หาร ก็ได้ค่าเท่ากัน…

ใช้ XOR

XOR เป็น logical operator ตัวหนึ่ง มีความหมายว่าค่าที่เทียบสองตัวต้องไม่เหมือนกันจึงเป็น true ถ้าเหมือนเป็น false

x ^= y;
y ^= x;
x ^= y;

สมมุติให้ x = 9, y = 1

แปลงเป็นเลขฐานสอง x = 1001, y = 0001

x ^= y
x กลายเป็น 1000

y ^= x
y กลายเป็น 1001

x ^= y
x กลายเป็น 0001

แปลงกลับเป็นฐานสิบ x = 1, y = 9

สลับกันแล้วเห็นไหมเอ่ย ^-^

  • ต่อ
    ยอมใช้วิธีเดิม - -'
  • SY
    เด็ดเลย เพิ่งเคยเห็น
  • oat
    ภาษาอะไรอะ

    python เขียน

    x,y = y,x
blog comments powered by Disqus