隨機快速排序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
- 8行程式碼實現快速排序,簡單易懂圖解!行程排序圖解
- 180行JavaScript程式碼實現的小球隨機移動程式碼JavaScript隨機
- MySQL 隨機查詢資料與隨機更新資料實現程式碼MySql隨機
- Swift實現快速排序Swift排序
- GO 實現快速排序Go排序
- 直播系統原始碼,實現快速排序和歸併排序原始碼排序
- php實現 歸併排序,快速排序PHP排序
- java視窗登入介面實現隨機驗證碼Java隨機
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 快速排序三種實現排序
- Python實現的快速排序Python排序
- Go實現氣泡排序和快速排序Go排序
- 三種語言實現快速排序(C++/Python/Java)排序C++PythonJava
- 快速排序-java排序Java
- java 快速排序Java排序
- 實現陣列的隨機排序(含洗牌演算法)陣列隨機排序演算法
- 教你如何運用golang 實現陣列的隨機排序Golang陣列隨機排序
- 圖解拓撲排序+程式碼實現圖解排序
- 排序演算法之快速排序的實現排序演算法
- JavaScript實現標準快速排序JavaScript排序
- Python3實現快速排序Python排序
- java實現人機猜拳遊戲的程式碼Java遊戲
- 用原生Js利用sort方法 實現圖片的正 倒排序和隨機排序JS排序隨機
- Java實現隨機抽獎的方法有哪些Java隨機
- 快速排序的四種python實現排序Python
- java快速實現匯出生成csv檔案(含註釋程式碼)Java
- Java 實現彙總排序Java排序
- Java實現氣泡排序Java排序
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- Java隨機生成圖片與HTML表單中的驗證碼實現Java隨機HTML
- 一個PHP通用隨機密碼的實現PHP隨機密碼
- 程式碼隨想錄:用棧實現佇列佇列
- 程式碼隨想錄:用佇列實現棧佇列
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法