隨機快速排序Java程式碼實現
隨機快速排序Java程式碼實現
/**
* 快速排序,使得整數陣列 arr 有序
*/
public static void quickSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
quickSort(arr, 0, arr.length - 1);
}
/**
* 快速排序,使得整數陣列 arr 的 [L, R] 部分有序
*/
public static void quickSort(int[] arr, int L, int R) {
if(L < R) {
// 把陣列中隨機的一個元素與最後一個元素交換,這樣以最後一個元素作為基準值實際上就是以陣列中隨機的一個元素作為基準值
swap(arr, new Random().nextInt(R - L + 1) + L, R);
int[] p = partition(arr, L, R);
quickSort(arr, L, p[0] - 1);
quickSort(arr, p[1] + 1, R);
}
}
/**
* 分割槽的過程,整數陣列 arr 的[L, R]部分上,使得:
* 大於 arr[R] 的元素位於[L, R]部分的右邊,但這部分資料不一定有序
* 小於 arr[R] 的元素位於[L, R]部分的左邊,但這部分資料不一定有序
* 等於 arr[R] 的元素位於[L, R]部分的中間
* 返回等於部分的第一個元素的下標和最後一個下標組成的整數陣列
*/
public static int[] partition(int[] arr, int L, int R) {
int basic = arr[R];
int less = L - 1;
int more = R + 1;
while(L < more) {
if(arr[L] < basic) {
swap(arr, ++less, L++);
} else if (arr[L] > basic) {
swap(arr, --more, L);
} else {
L++;
}
}
return new int[] { less + 1, more - 1 };
}
/*
* 交換陣列 arr 中下標為 i 和下標為 j 位置的元素
*/
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
來自快速排序
相關文章
- 快速排序 java實現排序Java
- java實現快速排序Java排序
- 快速排序(java實現)排序Java
- 排序演算法-Java實現快速排序演算法排序演算法Java
- 快速排序(java機試題)排序Java
- MySQL 隨機查詢資料與隨機更新資料實現程式碼MySql隨機
- GO 實現快速排序Go排序
- Swift實現快速排序Swift排序
- 快速排序的實現排序
- 8行程式碼實現快速排序,簡單易懂圖解!行程排序圖解
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- php實現 歸併排序,快速排序PHP排序
- java視窗登入介面實現隨機驗證碼Java隨機
- 隨機排序隨機排序
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 180行JavaScript程式碼實現的小球隨機移動程式碼JavaScript隨機
- 快速排序三種實現排序
- python實現快速排序Python排序
- Go實現氣泡排序和快速排序Go排序
- js實現的產生隨機數程式碼例項JS隨機
- canvas實現的隨機生成漂浮小球程式碼例項Canvas隨機
- javascript實現的生成驗證碼隨機數程式碼例項JavaScript隨機
- 學習筆記----快速排序的java實現及其改良筆記排序Java
- 實現陣列的隨機排序(含洗牌演算法)陣列隨機排序演算法
- 教你如何運用golang 實現陣列的隨機排序Golang陣列隨機排序
- java 快速排序Java排序
- 快速排序-java排序Java
- [JAVA]快速排序Java排序
- 快速排序 java排序Java
- java實現人機猜拳遊戲的程式碼Java遊戲
- JavaScript實現標準快速排序JavaScript排序
- Python實現的快速排序Python排序
- 快速排序(Quicksort)的Javascript實現排序UIJavaScript
- 排序演算法之快速排序的實現排序演算法
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 用原生Js利用sort方法 實現圖片的正 倒排序和隨機排序JS排序隨機
- 希爾排序java實現排序Java
- 圖解拓撲排序+程式碼實現圖解排序