Skip to main content

การแลกเปลี่ยนมาตรฐานคืออะไร?

ในการเขียนโปรแกรมคอมพิวเตอร์และวิทยาการคอมพิวเตอร์การแลกเปลี่ยนมาตรฐานเป็นสถานการณ์ในโปรแกรมที่ตัวแปรสองตัวต้องมีการแลกเปลี่ยนค่าของพวกเขาซึ่งต้องมีการสร้างตัวแปรที่สามเพื่อทำหน้าที่เป็นตัวกลางเมื่อมีการถ่ายโอนค่าการแลกเปลี่ยนมาตรฐานคือกระบวนทัศน์การเขียนโปรแกรมซึ่งหมายความว่าสามารถนำไปใช้กับสถานการณ์ใด ๆ ที่ต้องมีการแลกเปลี่ยนข้อมูลสองชิ้นและไม่เชื่อมโยงกับประเภทข้อมูลใด ๆ หรือภาษาการเขียนโปรแกรมมีหลายอินสแตนซ์ในโปรแกรมที่จำเป็นต้องเปลี่ยนค่า แต่มักจะเป็นองค์ประกอบมาตรฐานในคอลเลกชันและอาร์เรย์เมื่อใช้กับอัลกอริทึมการเรียงลำดับที่ต้องย้ายรายการจากดัชนีหนึ่งในคอลเลกชันไปยังอีกตัวค่าที่ถูกสลับจากมุมมองของฮาร์ดแวร์การแลกเปลี่ยนมาตรฐานสามารถเป็นฟังก์ชั่นโปรเซสเซอร์ระดับต่ำที่รองรับสำหรับชนิดข้อมูลสเกลาร์บางชนิดเช่นจำนวนเต็มซึ่งหมายความว่าไม่จำเป็นต้องสร้างค่าตัวกลางในหน่วยความจำการเข้าถึงแบบสุ่ม (RAM) เพื่อแลกเปลี่ยนตัวเลขสองตัวแนวคิดของการแลกเปลี่ยนมาตรฐานสามารถมองเห็นได้ด้วยตัวแปร A และ B;ในตอนท้ายของการแลกเปลี่ยนมาตรฐาน B ควรเท่ากับ A และ A ควรเท่ากับ B. หากโปรแกรมเพียงกำหนด B ให้กับ A ดังนั้นค่าของ A จะหายไปและไม่สามารถกำหนดให้ B. ในภายหลังได้ตัวแปรชั่วคราวที่จะเก็บค่าหนึ่งขณะที่ B ถูกกำหนดให้กับ A. ขั้นตอนสุดท้ายคือการกำหนดค่าตัวแปรชั่วคราวให้กับ B โดยเสร็จสิ้นการแลกเปลี่ยน

แอปพลิเคชั่นทั่วไปหนึ่งใบสำหรับการแลกเปลี่ยนมาตรฐานคือเมื่อใช้อัลกอริทึมการเรียงลำดับอาร์เรย์หรือคอลเลกชันหากอัลกอริทึมการเรียงลำดับได้พิจารณาแล้วว่าข้อมูลที่อาร์เรย์ดัชนี 1 จะต้องเปลี่ยนกับข้อมูลที่ดัชนี 10 ดังนั้นการสลับมาตรฐานของข้อมูลสามารถทำได้สิ่งนี้สามารถทำได้อย่างรวดเร็วเป็นพิเศษโดยใช้การอ้างอิงตัวชี้ในภาษาเช่น C.

ภาวะแทรกซ้อนสามารถเกิดขึ้นได้ในบางภาษาการเขียนโปรแกรมเชิงวัตถุเมื่อต้องเปลี่ยนอินสแตนซ์วัตถุสองรายการในบางกรณีที่หายากมากเพียงแค่สลับการอ้างอิงวัตถุจะไม่เริ่มการแลกเปลี่ยนจริงแต่วิธีเดียวที่จะแลกเปลี่ยนวัตถุคือการโคลนข้อมูลภายในฟิลด์ตามฟิลด์ระหว่างวัตถุทั้งสองและตัวแปรวัตถุชั่วคราว

มีเทคนิคหนึ่งที่สามารถใช้ในการดำเนินการแลกเปลี่ยนมาตรฐานโดยใช้เอกสิทธิ์-หรือ (XOR) ตัวดำเนินการเชิงตรรกะการแลกเปลี่ยน XOR ขึ้นอยู่กับความจริงที่ว่าเมื่อสองบิตถูกคำนวณด้วย XOR พวกเขาจะสร้างหน้ากากที่สามารถย้อนกลับกับผู้ประกอบการหนึ่งหรือทั้งสองคนด้วยวิธีนี้ตัวแปรสองตัวคือ A และ B สามารถเปลี่ยนได้โดยการสร้างหน้ากากครั้งแรกด้วย XOR ของตัวแปรสองตัวจากนั้นใช้ XOR เพื่อเปิดโปงค่าแรกสำหรับ B และจากนั้นค่าสำหรับ A. โชคไม่ดีแม้ว่าวิธีนี้จะหลีกเลี่ยงการสร้างตัวแปรชั่วคราวมันจะไม่ทำการแลกเปลี่ยนในทุกกรณีโดยเฉพาะเมื่อ A และ B เท่ากับซึ่งกันและกันและในกรณีที่การเพิ่มประสิทธิภาพคอมไพเลอร์อาจเปลี่ยนการทำงานจริง