java中的快速排序,也稱為分區交換排序,是一種分而治之的排序演算法。快速排序是最好地利用 CPU 快取的演算法的一個很好的例子,因為它具有分而治之的性質。快速排序演算法是最常用的排序演算法之一,尤其是對大型列表進行排序,並且大多數程式語言都實現了它。快速排序演算法將原始資料分成兩部分:單獨排序,然後合併產生排序資料。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
讓我們考慮陣列 {8, 6, 3, 4, 9, 2, 1, 7} 需要使用快速排序進行排序。
1.從陣列中選擇一個名為「樞軸」的元素。一般情況下,選擇中間的元素作為樞軸。讓我們以 4 為基準。
2.將陣列重新排列為兩部分,使得小於主元的元素出現在主元之前,大於主元的元素出現在主元之後。遵循以下步驟:
3.對左子數組(元素少於主元的數組)和右子數組(元素多於主元的數組)遞歸應用步驟 1 和 2。如果數組僅包含一個或零個元素,則該數組被視為分類數組。
這是一個使用快速排序演算法對整數數組進行排序的 java 程式。
代碼:
import java.lang.*; import java.util.*; public class Main { private int array[]; private int length; public void sort(int[] inputArrayArr) { if (inputArrayArr == null || inputArrayArr.length == 0) { return; } this.array = inputArrayArr; length = inputArrayArr.length; performQuickSort(0, length - 1); } private void performQuickSort(int lowerIndex, int higherIndex) { int i = lowerIndex; int j = higherIndex; // calculate pivot number // middle element taken as pivot int pivot = array[lowerIndex+(higherIndex-lowerIndex)/2]; // Divide into two subarrays while (i <= j) { /** * In each iteration, find an element from left side of the pivot which * is greater than the pivot value, and also find an element * From right side of the pivot which is less than the pivot value. Once the search * is complete, we exchange both elements. */ while (array[i] < pivot) { i++; } while (array[j] > pivot) { j--; } if (i <= j) { swapNumbers(i, j); //move index to next position on both sides i++; j--; } } // call performQuickSort() method recursively if (lowerIndex < j) performQuickSort(lowerIndex, j); if (i < higherIndex) performQuickSort(i, higherIndex); } private void swapNumbers(int i, int j) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } public static void main(String args[]){ Main quickSort = new Main(); int[] inputArray = {8,6,3,4,9,2,1,7}; quickSort.sort(inputArray); System.out.println("Sorted Array " + Arrays.toString(inputArray)); } }
輸出:
以下是快速排序演算法的優點:
快速排序是一種快速尾遞歸演算法,遵循分而治之的原則。以下是最佳、平均和最壞情況下的複雜度分析:
在 Java 中,陣列。 Sort() 方法使用快速排序演算法對陣列進行排序。
以上是Java中的快速排序演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!