การเรียงลำดับอย่างรวดเร็วอาจรู้สึกเร็วมากเมื่อคุณได้ยินชื่อนี้ แต่กรณีที่เลวร้ายที่สุดของความซับซ้อนของเวลาอัลกอริทึมนั้นเหมือนกับการเรียงลำดับการแทรก เหตุผลที่มันกลายเป็นอย่างรวดเร็วเพราะประสิทธิภาพโดยเฉลี่ยของมันเร็วกว่าการเรียงลำดับฮีป จำเป็นต้องเปิดพื้นที่เก็บข้อมูลใหม่โดยตรงในอาร์เรย์ดั้งเดิม แนวคิดของการเรียงลำดับอย่างรวดเร็วนั้นง่ายมากซึ่งคือการเลือกคำหลัก K เพื่อแบ่งอาร์เรย์ดั้งเดิมออกเป็นสองส่วน G1 และ G2 ถึง k วิธีการเรียงลำดับในรหัสคือคำอธิบายของคำสั่งตอนนี้ อัลกอริทึมที่สำคัญคือการค้นหาตำแหน่งของ K และแบ่งอาร์เรย์ดั้งเดิมออกเป็นสองส่วน วิธีการ getPlocation เป็นแกนหลักของการเรียงลำดับอย่างรวดเร็ว หลักการดำเนินการของเขาเป็นเหมือนการเรียงลำดับแทรก แต่ก็เหมือน ทุกครั้งที่ตำแหน่งท้ายที่สุดในแผนที่จะใช้เป็นคำหลัก และ J มีขนาดใหญ่กว่าแกนกลาง ไปข้างหน้า หลังจากวนลูปเช่นนี้การเริ่มต้นที่จะสิ้นสุด -1 จะถูกคั่นด้วยขนาด
การคัดลอกรหัสมีดังนี้:
ชั้นเรียนสาธารณะ Quicksort {
public int getPlocation (int [] แผนที่, int start, int end) {
int core = map [end];
int i = start-1;
สำหรับ (int j = start; j <= end-1; j ++) {
if (map [j] <= core) {
i ++;
int cache = map [j];
แผนที่ [j] = แผนที่ [i];
แผนที่ [i] = แคช;
-
-
i ++;
แผนที่ [end] = แผนที่ [i];
แผนที่ [i] = core;
กลับฉัน;
-
การเรียงลำดับโมฆะสาธารณะ (int [] แผนที่, int start, int end) {
if (start <end) {
int p = getPlocation (แผนที่เริ่มต้นสิ้นสุด);
เรียงลำดับ (แผนที่เริ่มต้น P-1);
เรียงลำดับ (แผนที่, p+1, สิ้นสุด);
-
-
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
int [] map = new int [] {4,1,5,3,7,12,65,7};
Quicksort QS = new Quicksort ();
QS.Sort (แผนที่, 0, map.length-1);
สำหรับ (int i = 0; i <map.length; i ++) {
System.out.println (แผนที่ [i]);
-
-
-