อัลกอริธึมธรรมดาทั่วไปสำหรับการค้นหาองค์ประกอบค่ามัธยฐานในอาร์เรย์ของจำนวนคือ:
- ตัวอย่างองค์ประกอบจากพร้อมการเปลี่ยนเป็น
- จัดเรียงและค้นหาอันดับองค์ประกอบและของ
- ตรวจสอบว่าและอยู่บนด้านตรงข้ามของค่ามัธยฐานของและว่ามีมากที่สุดองค์ประกอบในระหว่างและสำหรับบางคนคงเหมาะสม0 ล้มเหลวหากสิ่งนี้ไม่เกิดขึ้น
- มิฉะนั้นหาค่ามัธยฐานโดยการจัดเรียงองค์ประกอบของระหว่างและ
ไม่ยากที่จะเห็นว่าสิ่งนี้ทำงานในเวลาเชิงเส้นและประสบความสำเร็จกับความน่าจะเป็นสูง (เหตุการณ์ที่ไม่ดีทั้งหมดเป็นความเบี่ยงเบนขนาดใหญ่ห่างจากความคาดหวังของทวินาม)
อัลกอริธึมสำรองสำหรับปัญหาเดียวกันซึ่งเป็นธรรมชาติมากกว่าที่จะสอนให้นักเรียนที่เห็นการเรียงลำดับอย่างรวดเร็วเป็นสิ่งที่อธิบายไว้ที่นี่: การเลือกแบบสุ่ม
นอกจากนี้ยังเป็นเรื่องง่ายที่จะเห็นว่าสิ่งนี้มีระยะเวลาที่คาดว่าจะเป็นเส้นตรง: พูดว่า "รอบ" เป็นลำดับของการเรียกซ้ำที่สิ้นสุดเมื่อมีการแบ่ง 1 / 4-3 / 4 จากนั้นสังเกตว่าความยาวที่คาดหวังของ รอบที่มากที่สุด 2. (ในการดึงครั้งแรกของรอบความน่าจะเป็นของการแยกที่ดีคือ 1/2 และหลังจากนั้นเพิ่มขึ้นตามจริงแล้วอัลกอริทึมถูกอธิบายเพื่อให้ความยาวรอบถูกครอบงำโดยตัวแปรสุ่มทางเรขาคณิต)
ดังนั้นตอนนี้คำถาม:
เป็นไปได้หรือไม่ที่จะแสดงว่าการเลือกแบบสุ่มทำงานในเวลาเชิงเส้นที่มีความน่าจะเป็นสูงหรือไม่?
เรามีรอบและแต่ละรอบมีความยาวอย่างน้อยด้วยความน่าจะเป็นที่มากที่สุดดังนั้นการรวมกันทำให้เวลาในการทำงานคือกับความน่าn)2 - k + 1 O ( n บันทึกบันทึกn ) 1 - 1 / O ( บันทึกn )
นี่เป็นเรื่องที่ไม่น่าพอใจ แต่จริง ๆ แล้วมันเป็นความจริงหรือไม่?