พื้นหลัง:เจ้าเสี่ยวโพสต์คำถามต่อไปนี้เวลาที่ผ่านมา " มีการเปรียบเทียบที่รู้จักกันใด ๆ เรียงลำดับขั้นตอนวิธีการที่ไม่ได้ลดไปยังเครือข่ายการเรียงลำดับเช่นว่าแต่ละองค์ประกอบจะถูกเปรียบเทียบครั้ง? " ดูเหมือนว่าเราติดอยู่กับปัญหาเล็กน้อย ฉันได้พูดคุยปัญหาเดียวกันกับ Valentin Polishchuk ในปี 2009 และเราไปถึงไหนแล้ว
เพื่อให้ได้แนวคิดใหม่ ๆ ฉันพยายามหาคำถามที่ง่ายที่สุดที่มีรสชาติคล้ายกันและไม่น่ารำคาญ ดังนั้นคำถามต่อไปนี้
คำถาม:คุณจะได้รับรายการที่เรียงสองรายการโดยแต่ละรายการมีองค์ประกอบรายการ คุณสามารถรวมรายการต่างๆเพื่อให้แต่ละองค์ประกอบเปรียบเทียบเฉพาะครั้งได้หรือไม่
โดยปกติเอาต์พุตควรเป็นรายการที่เรียงลำดับซึ่งมีองค์ประกอบทั้งหมด
[สิ่งนี้กลายเป็นเรื่องไม่สำคัญคำตอบคือ "ไม่"]
คำถามที่ 2:คุณได้รับสองรายการที่เรียงลำดับโดยแต่ละรายการมีองค์ประกอบรายการ คุณสามารถรวมรายการต่างๆเพื่อให้แต่ละองค์ประกอบมีการเปรียบเทียบครั้งเท่านั้นหากคุณได้รับอนุญาตให้ยกเลิกองค์ประกอบส่วนเล็ก ๆ ได้หรือไม่
ผลลัพธ์ที่ได้ควรเป็นรายการที่เรียงลำดับที่มีองค์ประกอบและ "ถังขยะ" ที่มีองค์ประกอบคุณสามารถทำให้ค่าขนาดเล็กแค่ไหน การได้รับนั้นไม่สำคัญ สิ่งที่ต้องการควรทำได้ในลักษณะที่ตรงไปตรงมา แต่คุณจะได้ไหม
หมายเหตุ:
เราใช้รูปแบบการเปรียบเทียบที่นี่ อัลกอริทึมที่กำหนดเท่านั้นเราสนใจในการรับประกันกรณีที่เลวร้ายที่สุด
โปรดทราบว่ารายการทั้งสองมีองค์ประกอบอย่างแน่นอน ถ้าเรามีหนึ่งรายการที่มีองค์ประกอบnรายการและอีกหนึ่งรายการมี1องค์ประกอบคำตอบนั้นชัดเจนว่า "ไม่" แต่ถ้าทั้งสองรายการมีความยาวมันก็ดูเหมือนว่าหนึ่งอาจจะสามารถที่จะทำบางอย่าง "สมดุลภาระ"
เวลานี้อัลกอริทึมชนิดใดก็ได้ที่ถูกต้อง หากอัลกอริทึมของคุณใช้เครือข่ายการเรียงลำดับเป็นแบบเอกสารสำเร็จรูปจะถือว่าสมบูรณ์แบบ
สำหรับจุดเริ่มต้นนี่คืออัลกอริทึมแบบง่ายที่เปรียบเทียบแต่ละองค์ประกอบเป็นจำนวนมากที่สุด 200 เท่า: ใช้อัลกอริธึมผสานแบบมาตรฐาน แต่บำรุงรักษาเคาน์เตอร์สำหรับส่วนหัวของรายการ เมื่อคุณไปถึง 200 ให้ทิ้งองค์ประกอบ ตอนนี้สำหรับแต่ละองค์ประกอบที่คุณทิ้งคุณได้วางองค์ประกอบ 200 รายการในอาร์เรย์ผลลัพธ์เรียบร้อยแล้ว ดังนั้นคุณมีความ 100