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中文网其他相关文章!