資料結構之快速排序的三種寫法

2021-10-25 10:42:33 字數 1212 閱讀 7094

方法1:前面放乙個指標的方法

void

quick

(int

*arr,

int len,

int start,

int end)}}

swap

(&arr[low]

,&arr[start]);

if(low-

1> start)

quick

(arr, len, start, low -1)

;if(low+

1< end)

quick

(arr, len, low+

1, end);}

void

sort_quick

(int

*arr,

int len)

方法2:前後指標交換法

//快速排序

void

sort_quick

(int

* arr,

int low,

int high)

} arr[low]

= arr[e]

;//所有大於參考值的左乙個值

arr[e]

= temp;

//參考值去到對應位置

sort_quick

(arr, low, e -1)

;//分割

sort_quick

(arr, e +

1, high);}

void

sort_quick

(int

* arr,

int len)

方法3:前後輪流交換法

void

quick

(int

*arr,

int start,

int end)

arr[l]

= key;

// 分割陣列(邏輯上)

quick

(arr,start,l-1)

;quick

(arr,l+

1,end);}

// 快速排序

void

sortquick

(int

*arr,

int len)

資料結構之快速排序(三)

思想 1.在待排序的元素任取乙個元素作為基準 通常選第乙個元素,但最好的選擇方法是從待排序元素中隨機選取乙個作為基準 稱為基準元素 2.將待排序的元素進行分割槽,比基準元素大的元素放在它的右邊,比其小的放在它的左邊 3.對左右兩個分割槽重複以上步驟直到所有元素都是有序的。所以我是把快速排序聯想成東拆...

三種快速排序

3種快排的實現方式,1是不適合重複元素多,2可以適應重複元素多,3可以優化重複元素多的時間 author hxj 2020年7月27日 public class main int l 0,r arr.length 1 quicksort arr,l,r private static void qui...

關於氣泡排序,三種寫法

最近寫乙個簡單的排序,就用冒泡就行,結果忘了。於是就重新思考寫了一下。隨手寫出乙個,竟然寫完後有點懵了,到底寫的對不對呢。為方便,用matlab進行驗證,並檢視了網上流行的寫法。都寫在下面,其中,自認為第二種為最容易理解。當然,3種寫法,交換次數完全相同,交換之後結果完全相同。程式如下 clc cl...