พาร์ติชัน Lomuto กับ Hoare Lomuto จะทนทุกข์เมื่อเรียงลำดับคีย์เท่ากันในขณะที่พาร์ติชัน Hoare ไม่ทำ
แผนการแบ่งพาร์ติชันทั้งสองประสบอย่างเท่าเทียมกันเมื่อใช้ pivot ที่ห่างจากค่ามัธยฐาน
การวัดความผิดปกติ
การวัดความผิดปกติที่จะเลือกใช้เพื่อจุดประสงค์ของ quicksort นั้นง่ายมาก
ตอบ: เดือยที่อยู่ห่างจากค่ามัธยฐานไกลเท่าไหร่เมื่อเทียบกับข้อมูลสุ่ม?
หากคุณยืนยันในการใช้พาร์ติชัน Lomuto และหากคุณอนุญาตให้ใช้ค่าซ้ำคุณต้องเพิ่มการทดสอบแบบสุ่มต่อไปนี้:
B: มีองค์ประกอบที่ซ้ำกันจำนวนเท่าใดเมื่อเปรียบเทียบกับการสุ่ม
แน่นอนว่ามันค่อนข้างโง่ที่คิดว่าอนุญาตให้ใช้ค่าซ้ำกันในชุดข้อมูลของคุณและยังประเมินพาร์ติชัน Lomuto ได้ดังนั้นคุณควรกำจัดรายการที่ซ้ำกันล่วงหน้าหรือเปลี่ยนไปใช้พาร์ติชัน Hoare หรือสมมติว่าซ้ำกันได้ยาก
มาตรการทั้งสองมีความสำคัญในการวัดปริมาณโดยใช้สถิติ
เราสามารถแยกแยะข้อมูลทางพยาธิวิทยาออกจาก
ความเบี่ยงเบนอื่น ๆ จากการสุ่มจะไม่สำคัญสำหรับวัตถุประสงค์ในการวิเคราะห์ quicksort ตราบเท่าที่เดือยอยู่ใกล้กับค่ามัธยฐานมันจะทำงานได้ดีกับข้อมูลทั้งหมดที่ไม่ใช่พยาธิวิทยา
ระยะทางจากการสุ่มจะต้องดีมากจริง ๆ เพื่อทางลัด - ทางพยาธิวิทยาดังนั้นเราสามารถแยกมันออกได้
ห้ามใช้ pivot แบบคงที่ใด ๆ ในรหัสจริง
โปรดทราบว่าหากคุณเขียนรหัสจริงด้วย pivot แบบตายตัว*) (สิ่งใดก็ตามที่อาจเป็นสาระสำคัญ) คุณกำลังเปิดตัวเองจนปฏิเสธการโจมตีบริการเนื่องจากผู้โจมตีสามารถแทรก ค่าทางพยาธิวิทยา ณ จุดนั้นดังนั้นคุณควรเลือกองค์ประกอบแบบสุ่มเป็นเดือย
*) หรือหลาย pivots หากคุณเลือกที่ดีที่สุดของ x pivots