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