下面的文章《Java 中的快速排序》提供了 Java 中快速排序演算法的概述。快速排序演算法是一種高效率的排序演算法,與合併排序演算法類似。這是用於即時排序目的的常用演算法之一。此演算法最壞情況時間複雜度為 O(n^2),平均情況時間複雜度為 O(n log n),最好情況時間複雜度為 O(n log n)。
空間複雜度為 O(n log n),其中 n 是輸入的大小。排序過程涉及輸入的分區、遞歸迭代以及為每個遞歸標記關鍵元素。此演算法中的排序類型涉及以迭代方式比較相鄰元素。
開始您的免費軟體開發課程
網頁開發、程式語言、軟體測試及其他
快速排序演算法可以在 Java 中實現,方法是形成偽代碼,並以有效的方式設計和遵循一系列步驟。
QuickSort演算法已使用Java程式語言實作如下,輸出程式碼已顯示在程式碼下方。
以下是程式碼實作:
代碼:
/* * Quick Sort algorithm - Divide & Conquer approach */ public class QuickSortAlgorithm { public static void main(String[] args) { int[] array = { 99, 31, 1, 3, 5, 561, 1, 342, 345, 454 }; quickSortAlgo(array, 0, array.length - 1); for (int ar : array) { System.out.print(ar + " "); } } public static int arrayPartition(int[] array, int start, int end) { int pivot = array[end]; int i = (start - 1); for (int ele = start; ele < end; ele++) { if (array[ele] <= pivot) { i++; int swap = array[i]; array[i] = array[ele]; array[ele] = swap; } } // Swapping the elements int swap = array[i + 1]; array[i + 1] = array[end]; array[end] = swap; return i + 1; } public static void quickSortAlgo(int[] arrayTobeSorted, int start, int end) { if (start < end) { int pivot = arrayPartition(arrayTobeSorted, start, end); quickSortAlgo(arrayTobeSorted, start, pivot - 1); quickSortAlgo(arrayTobeSorted, pivot + 1, end); } } }
輸出:
與其他排序技術相比,快速排序演算法很高效,但不太穩定。當重複元素數量較多時,快速排序演算法的效率會下降,這是缺點。此快速排序演算法優化了空間複雜度。
以上是Java中的快速排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!