สมมติว่าเราต้องการที่จะเรียงลำดับรายการของตัวเลขจริง สมมติว่าเราได้รับกล่องดำที่สามารถเรียงจำนวนจริงได้ทันที เราจะได้ประโยชน์มากแค่ไหนเมื่อใช้กล่องดำนี้?√
ตัวอย่างเช่นเราสามารถเรียงลำดับหมายเลขด้วยการโทรไปยังกล่องดำได้หรือไม่ อัลกอริทึมที่ดีที่สุดที่ฉันพบใช้การเรียกไปยังกล่องดำ แต่ฉันไม่สามารถปรับปรุงได้อีก นี่คืออัลกอริทึมของฉันซึ่งคล้ายกับการผสานเรียง:n
พาร์ทิชันแรกรายการเข้าไปในรายการมีประมาณขนาด จากนั้นใช้เรียกไปยังกล่องดำเพื่อเรียงลำดับรายการเหล่านี้ ท้ายที่สุดผสานรายการที่เรียงลำดับโดยใช้กล่องดำดังนี้:√ s1,s2, . . ,s √√√
ใส่องค์ประกอบที่เล็กที่สุดของรายการในรายการใหม่จากนั้นเรียกกล่องดำเพื่อเรียงลำดับ จำนวนใน (ครั้งแรกและองค์ประกอบที่เล็กที่สุดของ ) จะเป็นจำนวนที่น้อยที่สุดในSเราสามารถวางไว้ในตำแหน่งแรกของรายการเอาท์พุท
สมมติว่าองค์ประกอบที่ได้รับการแต่งตั้งจากเราแทนที่ด้วยองค์ประกอบที่เล็กที่สุดที่สองของรายการจัดเรียงและทำงานอีกครั้งกล่องสีดำที่มันจะคำนวณสมาชิกที่เล็กที่สุดที่สองของS
เราดำเนินการต่อไปจนถึงองค์ประกอบทั้งหมดจะถูกจัดเรียง จำนวนกล่องดำทั้งหมดที่เรียกใช้สำหรับส่วนนี้คือL [ 1 ] L S s J L [ 1 ] s J S n - √
. ดังนั้นโดยรวมจำนวนของสายจะn
ในทางกลับกันดูเหมือนว่าเราควรจะได้รับขอบเขตล่างโดยใช้ขอบเขตล่างบนการเปรียบเทียบจำนวนที่จำเป็นสำหรับการเรียงลำดับดังนี้: เราสามารถใช้กล่องดำโดยใช้การเปรียบเทียบ ถ้าเราสามารถแก้ปัญหาด้วยการเรียกไปที่กล่องดำและรวมกันเป็นเส้นตรงเวลาเราสามารถจัดเรียงจำนวนจริงด้วยการเปรียบเทียบซึ่งเป็นไปไม่ได้o( √no(nlgn)
ฉันเดาได้ว่าเราสามารถพิสูจน์ได้ว่าเป็นขอบเขตที่ต่ำกว่าสำหรับจำนวนการโทรไปยังกล่องดำเนื่องจากการเปรียบเทียบจำนวนมากที่ใช้ในกล่องดำจะถูกแชร์และดังนั้นจึงมีการอธิบายในอาร์กิวเมนต์ของเรา
ปรับปรุง:ตามที่โพสต์อื่น ๆ แนะนำก็สามารถทำได้เช่นกัน