成为专业认证的快速排序是一种分而治之的算法。在分治算法的设计范式中,我们先递归地将问题分解成子问题,然后再求解子问题,最后将求解结果进行组合得到最终结果。在本文中,我们将重点讨论Java中的快速排序本
成为专业认证的
快速排序是一种分而治之的算法。在分治算法的设计范式中,我们先递归地将问题分解成子问题,然后再求解子问题,最后将求解结果进行组合得到最终结果。在本文中,我们将重点讨论Java中的快速排序
本文将介绍以下指针,
在Java中的快速排序快速排序功能分区代码快速排序Java代码
让我们开始
在将问题划分为子问题时要记住的一件事是,子问题的结构不会像原来的问题那样发生变化。分治算法有三个步骤:
分治:将问题分解为子问题分治:递归求解子问题合并:结合解得到最终结果
有各种基于分治范式的算法。其中包括快速排序和合并排序。
尽管快速排序的最坏时间复杂度是O(n2),这比许多其他排序算法(如合并排序和堆排序)都要高,但实际上快速排序的速度更快,因为它的内循环可以在大多数体系结构上有效地实现,在大多数实际数据中,
让我们来讨论快速排序算法的实现。快速排序算法采用一个pivot元素并围绕pivot元素对数组进行分区。Quicksot有很多变体,这取决于您如何选择pivot元素。选择pivot元素有多种方法:
选择第一个元素选择最后一个元素选择一个随机元素选择中间元素
接下来要了解的重要事情是,Quick sort算法中的partition()函数。Partition函数获取一个pivot元素,将其放在正确的位置,将所有小于pivot元素的元素移到其左侧,将所有大于pivot元素的元素移到其右侧。快速排序需要线性时间。然后将数组从pivot元素(即小于pivot的元素和大于pivot的元素)分成两部分,这两个数组都使用快速排序算法递归排序。
现在我们已经了解了快速排序算法的工作原理。让我们了解如何在Java中使用imlpelement快速排序算法。
快速排序函数:
/*Quicksort函数需要使用最低和最高索引对数组进行排序*/
void排序(int arr[],int lowIndex,int highIndex){//直到低指数=高指数{int p=分区(arr,低索引,高索引);排序(arr,低指数,p-1);排序(arr,p 1,高指数);}}int分区(int arr[],int lowIndex,int highIndex){int pivot=arr[高索引];//使用i从pivot跟踪较小的元素int i=(低指数-1);{//如果当前元素小于或等于pivot{//与第j个元素交换内部温度=arr[i];arr[j]=温度;}内部温度=arr[i 1];arr[highIndex]=温度;}
现在您已经了解了Quicksort和partition函数,让我们快速查看完整的代码
Quicksort Java代码{int分区(int arr[],int lowIndex,int highIndex)int pivot=arr[高索引];int i=(低指数-1);if(arr[j]