資料結構演算法 快速排序(QuickSort)

2021-09-25 04:09:51 字數 1956 閱讀 1650

快速排序是對氣泡排序的一種改進,**如下:

具體實現**如下:

/*

快排 */

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...