public static void main(String[] args) {
int[] arr = {9, 5, 7, 3, 1, 6, 8, 4, 2};
quickSort(arr,0,arr.length - 1);
}
private static void quickSort(int[] arr, int left, int right) {
if (left >= right) {
return;
}
//先排序一遍,再遞迴拆分,和歸併有區別,歸併是先拆分,再合併排序
int partition = partition(arr, left, right);//排序完找到前一趟基準值下標,作為左右陣列的左右邊界
System.out.println(Arrays.toString(arr));
quickSort(arr,left,partition - 1);//基準位置已經排序,不用向歸併一樣參加排序
quickSort(arr,partition + 1,right);//基準位置已經排序,不用向歸併一樣參加排序
}
private static int partition(int[] arr, int left, int right) {
//陣列的第一個元素作為基準值
int pivot = arr[left];
int i = left;
int j = right;
int temp = 0;
while (i < j) {
//從右邊開始找,找到小於基準值的數
//跳出迴圈說明要麼找到小於基準值的,要麼就是j和i重了
while (i<j && arr[j] >= pivot) {
j--;
}
//從左邊開始找,找到大於基準值的數
//跳出迴圈說明要麼找到小於基準值的,要麼就是j和i重了
while (i < j && arr[i] <= pivot) {
i++;
}
//找到就開始替換,替換完畢開始下一輪找,直至拆分的陣列左右都替換完成
if (i < j) {
temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
//此時基準值還沒動,所以把基準值放到指定位置
temp = arr[i];//這裡的i和j是重合的,所以用i和j都可以
arr[i] = arr[left];//這裡為什麼是替換left下標,因為上面的迴圈中,我們是從小到大的順序排序,i的位置一定是小於基準值的
arr[left] = temp;
return i;
}
快速排序 (Quick Sort)
相關文章
- Sorting 排序演算法: Quick Sort 快速排序排序演算法UI
- 快速排序演算法(Quick_Sort)排序演算法UI
- 排序演算法之「快速排序(Quick Sort) _c++ 」排序演算法UIC++
- Sort排序專題(5)快速排序(QuickSort)(C++實現)排序UIC++
- sort排序排序
- 常見排序演算法及其實現(Binary,Insert、Select、Quick、Bubble.etc.Sort)排序演算法UI
- Array.sort 演算法原理(插入排序\快速排序in-place實現)演算法排序
- Collections sort()排序方法排序
- 堆排序 Heap Sort排序
- Elasticsearch script sort 排序Elasticsearch排序
- 希爾排序(Shell Sort)排序
- 計數排序 - Counting Sort排序
- 插入排序(Insertion Sort)排序
- golang sort.Sort () 排序演算法學習Golang排序演算法
- Quick Pow: 如何快速求冪UI
- SS241115C. 排序(sort)排序
- Collections.sort()方法,字元排序字元排序
- Array.sort排序問題排序
- go sort.Interface 排序介面Go排序
- 排序演算法(3)插入排序(Insertion Sort)排序演算法
- 排序演算法之「插入排序(Insertion Sort)」排序演算法
- 排序演算法之「歸併排序(Merge Sort)」排序演算法
- 【c++】結構體sort排序C++結構體排序
- Python 排序---sort與sorted學習Python排序
- 【Oracle】排序與sort_area_sizeOracle排序
- Javascript陣列排序sort方法和自定義排序方法JavaScript陣列排序
- Python中用來排序的方法sort、sortedPython排序
- java中Collections.sort排序詳解Java排序
- 在命令列用 sort 進行排序命令列排序
- Algorithm-sort 排序演算法 pythonGo排序演算法Python
- Arrays.sort(arr)是什麼排序排序
- C++ partial_sort(部分排序)C++排序
- 排序(對於 sort 函式的使用)排序函式
- 簡單選擇排序(Simple Selection Sort)排序
- List排序Collections.sort 重寫compare排序
- 【轉】堆排序Heap Sort——Java實現排序Java
- 排序之快速排序排序
- 排序:氣泡排序&快速排序排序