快速排序是對氣泡排序的一種改進,**如下:
具體實現**如下:
/*
快排 */
public
class
quicksort
;quicksort
(arr,
0,arr.length-1)
; system.out.
println
("arr="
+arrays.
tostring
(arr));
}public
static
void
quicksort
(int
arr,
int left,
int right)
while
(arr[r]
>midval)
//l >= r成立時,midval的左右兩邊的值,左邊已經全部按照小於等於midval值,右邊全部都是大於等於midval值
if(l >= r)
//交換
temp = arr[l]
; arr[l]
= arr[r]
; arr[r]
= temp;
//如果交換完後,發現這個arr[l] == midval,r-- ,前移
if(arr[l]
== midval)
//如果交換完後,發現這個arr[r] == midval ,l++,,後移
if(arr[r]
== midval)
}//如果l==r,必須l++,r--,否則會出現棧溢位
if(l==r)
}}
測試**如下:
int
arr =
newint
[1000000];
for(
int i=
0;i<
1000000
;i++
) system.out.
println
("排序前:");
date data1 =
newdate()
; ******dateformat ******dateformat =
new******dateformat
("yyy--mm--dd hh:mm:ss");
string data1str = ******dateformat.
format
(data1)
; system.out.
println
("排序前的時間是="
+data1str)
;quicksort
(arr,
0,arr.length-1)
; date data2 =
newdate()
; string data2str = ******dateformat.
format
(data2)
; system.out.
println
("排序後的時間是="
+data2str)
; system.out.
println
(arrays.
tostring
(arr));
/* int arr = new int;
quicksort(arr,0,arr.length-1);
system.out.println("arr="+arrays.tostring(arr));
*/
資料結構 排序演算法 快速排序
演算法描述 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地...
資料結構 快速排序演算法
一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j 找到第乙個小於key的值a j 將a j 和a i 互換 4 從i開始向後搜尋,即由前開始向後搜尋 i ...
資料結構與演算法 排序演算法 快速排序
源 cpp view plain copy include void quicksort int int,int intfindposs int int,int intmain quicksort arry,0,6 printf after sorted n for i 0 i 7 i printf...