演算法步驟
從數列中挑出乙個元素,稱為 「基準」(pivot)
重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面(相同的數可以到任一邊)。在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽(partition)操作
遞迴地(recursive)把小於基準值元素的子數列和大於基準值元素的子數列排序
呼叫quicksort方法,將陣列,陣列首位序列,陣列末尾序列傳入該方法
public
int[
]sort
(int
sourcearray)
throws exception
不停的迭代partition方法,直至分割槽長度為1
private
int[
]quicksort
(int
arr,
int left,
int right)
return arr;
}
在arr陣列中,以left為基準值,right為分割槽排序的長度,將小於left的數值放在其左側,大於left的數值放在其右側
private
intpartition
(int
arr,
int left,
int right)
}swap
(arr, pivot, index -1)
;return index -1;
}
將陣列arr中,序列為i和序列為j的兩個數交換
private
void
swap
(int
arr,
int i,
int j)
主方法,驗證**是否正確
public
static
void
main
(string[
] args)
throws exception ;
quicksort qs =
newquicksort()
;int
result = qs.
sort
(arr);
system.out.
print
("排序後的陣列為:");
for(
int num:result)
}
參考
菜鳥教程
java 快速排序
public class myquicksort while strvoid middle strvoid low lowif low hight else if hight middle temp strvoid hight strvoid hight strvoid low strvoid lo...
快速排序(java)
快速排序 public class quacksort int pivot arr low 取第乙個數作為中間數 左滑塊當前的下標數,從第二個數字開始,從最後乙個開始 int left low 1 int right high 右滑塊當前的下標數 while left right 從右邊開始找 wh...
快速排序(Java)
快速排序的思想是基於分治法加上遞迴思想,排序陣列時,將陣列分成兩個小部分,然後對它們遞迴排序,直到它們都不可再分為止。快速排序的平均執行時間是o nlog n 遠比插入排序的o n 2 時間小。快速排序 param arr param start param end return private s...