การเรียงลำดับด่วน เป็นการปรับปรุงการเรียงลำดับแบบฟองอากาศตามแนวคิดไบนารี่ แนวคิดหลักคือการสร้างฐาน วางตัวเลขที่เล็กกว่าฐานทางด้านซ้ายของฐาน แล้ววางตัวเลขที่ใหญ่กว่าฐานทางด้านขวาของฐาน จากนั้นจึงเรียงลำดับตัวเลขทั้งสองส่วนเพิ่มเติมเพื่อให้ได้ การเรียงลำดับอาร์เรย์
ข้อได้เปรียบ ของมันคือประสิทธิภาพสูง และความซับซ้อนของเวลาโดยเฉลี่ยคือ O(nlogn) ตามชื่อที่แนะนำ การเรียงลำดับอย่างรวดเร็วเป็นอัลกอริธึมการเรียงลำดับที่เร็วที่สุดและใช้ทรัพยากรเพียงเล็กน้อย จะถูกแบ่งเท่าๆ กันทุกครั้ง ในกรณีของอาร์เรย์ โค้ดจะค่อนข้างง่าย
ข้อเสีย ของมันคือมันไม่เสถียร เมื่อมีการเรียงลำดับเริ่มต้นหรือเรียงลำดับโดยทั่วไป ความซับซ้อนของเวลาจะลดลงไปที่ O(n^2)
ตัวอย่างเช่น:
publicclassMain{//วิธีการใช้แถวด่วน publicstaticvoidquickRow(int[]array,intlow,inthigh){inti,j,pivot;//เงื่อนไขสิ้นสุด if(low>=high){return;}i=low;j=high;/ /โหนดที่เลือก หมายเลขแรกของอาร์เรย์ที่เลือกที่นี่จะถูกใช้เป็นโหนด pivot=array[low];ในขณะที่(i<j){//มองหาตัวเลขที่เล็กกว่าโหนดจากขวาไปซ้ายในตอนท้าย ของลูป ไม่ว่าจะพบหรือ i =j While(array[j]>=pivot&&i<j){j--;}//มองหาตัวเลขที่ใหญ่กว่าโหนดจากซ้ายไปขวาที่ส่วนท้ายของลูป ไม่ว่าจะพบอยู่หรือ i=j While(array[i]<=pivot&&i <j){i++;}//หากพบคำแนะนำ i!=j ให้แลกเปลี่ยนตัวเลขสองตัว if(i<j){inttemp=array [i];array[i]=array[j];array [j]=temp;}}//i==j วงจรสิ้นสุดลง จำนวนโหนดการแลกเปลี่ยน และจำนวนจุดประชุม array[low]=array [i];array[i]=pivot;//array "divided" "Two halves" จากนั้นทำซ้ำการดำเนินการข้างต้น QuickRow(array,low,i-1);quickRow(array,i+1,high);} publicstaticvoidmain(String[]args){int[]array={6,17, 38,59,2,10};intlow=0,high=array.length-1;quickRow(อาร์เรย์,ต่ำ,สูง);สำหรับ( inti:array){System.out.println(i);}}}
ผลการวิ่งมีดังนี้:
2610173859