iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >在Java中怎么实现一个快速排序算法
  • 437
分享到

在Java中怎么实现一个快速排序算法

java 2023-05-30 21:05:59 437人浏览 泡泡鱼
摘要

在Java中怎么实现一个快速排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序

在Java中怎么实现一个快速排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。

一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后,又从前往后开始比较,如果有比基准值大的,交换位置,如果没有继续比较下一个,直到找到第一个比基准值大的值才交换。直到从前往后的比较索引>从后往前比较的索引,结束第一次循环,此时,对于基准值来说,左右两边就是有序的了。

接着分别比较左右两边的序列,重复上述的循环。

public class FastSort{public static void main(String []args){System.out.println("Hello World");int[] a = {12,20,5,16,15,1,30,45,23,9};int start = 0;int end = a.length-1;sort(a,start,end);for (int i = 0; i<a.length; i++){System.out.println(a[i]);}}public void sort(int[] a,int low,int high){int start = low;int end = high;int key = a[low];while(end>start){//从后往前比较while(end>start&&a[end]>=key) //如果没有比关键值小的,比较下一个,直到有比关键值小的交换位置,然后又从前往后比较end--;if(a[end]<=key){int temp = a[end];a[end] = a[start];a[start] = temp;}//从前往后比较while(end>start&&a[start]<=key)//如果没有比关键值大的,比较下一个,直到有比关键值大的交换位置start++;if(a[start]>=key){int temp = a[start];a[start] = a[end];a[end] = temp;}//此时第一次循环比较结束,关键值的位置已经确定了。左边的值都比关键值小,右边的值都比关键值大,但是两边的顺序还有可能是不一样的,进行下面的递归调用}//递归if(start>low) sort(a,low,start-1);//左边序列。第一个索引位置到关键值索引-1if(end<high) sort(a,end+1,high);//右边序列。从关键值索引+1到最后一个}}

在Java中怎么实现一个快速排序算法

上面最后一句不是基准值的意思是,不是直接用基准值交换,是用基准值所在的索引交换。

下面我们看看另一种实现方式。

一趟快速排序的过程如下

(1)先从序列中选取一个数作为基准数

(2)将比这个数大的数全部放到它的右边,把小于或者等于它的数全部放到它的左边

一趟快速排序也叫做Partion,即将序列划分为两部分,一部分比基准数小,另一部分比基准数大,然后

再进行分治过程,因为每一次Partion不一定都能保证划分得很均匀,所以最坏情况下的时间复杂度不能

保证总是为在Java中怎么实现一个快速排序算法

对于Partion过程,通常有两种方法

(1)两个指针从首尾向中间扫描(双向扫描)

这种方法可以用挖坑填数来形容,比如

在Java中怎么实现一个快速排序算法

初始化:i=0;j=9;pivot=a[0];

现在a[0]保存到了变量pivot中了,相当于在数组a[0]处挖了个坑,那么可以将其它的数填到这里来。从j开始向前找一个小于或者等于pivot的数,即将a[8]填入a[0],但a[8]又形成了一个新坑,再从i开始向后找一个大于pivot的数,即a[3]填入a[8],那么a[3]又形成了一个新坑......

就这样,直到i==j才停止,最终得到结果如下

在Java中怎么实现一个快速排序算法

上述过程就是一趟快速排序。

public class QuickSort {public static void main(String[] args){Integer[] arr = {8, 2, 9, 1, 5, 10, 12, 3, 18, 6};System.out.println(Arrays.asList(arr));quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.asList(arr));}public static void quickSort(Integer[] arr, int left, int right) {if(left < right) {int partition = partition(arr, left, right);quickSort(arr, left, partition - 1);quickSort(arr, partition + 1, right);}}public static int partition(Integer[] arr, int left, int right) {Integer pivot = arr[left];int i = left, j = right;while (i < j) {while (arr[j] >= pivot && i < j) {j--;}arr[i] = arr[j];while (arr[i] <= pivot && i < j) {i++;}arr[j] = arr[i];}arr[i] = pivot;return i;}}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: 在Java中怎么实现一个快速排序算法

本文链接: https://www.lsjlt.com/news/221262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 在Java中怎么实现一个快速排序算法
    在Java中怎么实现一个快速排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序...
    99+
    2023-05-30
    java
  • 一文教你在Java中实现一个冒泡排序和快速排序
    一文教你在Java中实现一个冒泡排序和快速排序?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。冒泡排序  冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列...
    99+
    2023-05-31
    java 冒泡排序 快速排序
  • Python中怎么实现快速排序算法
    Python中怎么实现快速排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python实现快速排序算法快速排序算法是一种基于交换的高效的排序算法,由C.R.A.Hoare...
    99+
    2023-06-02
  • Java排序算法之怎么实现快速排序的三数取中法
    这篇文章主要讲解了“Java排序算法之怎么实现快速排序的三数取中法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java排序算法之怎么实现快速排序的三数取中法”吧!基本步骤三数取中在快排的过...
    99+
    2023-06-25
  • java如何实现快速排序算法
    这篇文章将为大家详细讲解有关java如何实现快速排序算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。快速排序算法使用的分治法策略来把一个序列分为两个子序列来实现排序的思路:1.从数列中挑出一个元素,称为...
    99+
    2023-06-02
  • go快速排序算法怎么实现
    快速排序(Quick Sort)是一种高效的排序算法,它的基本思想是选择一个基准元素,通过一趟排序将数组分成两部分,其中一部分的所有...
    99+
    2023-10-26
    go
  • python快速排序算法怎么实现
    快速排序是一种常用的排序算法,其算法思想是通过递归地将数组分为较小和较大的两个子数组,然后不断重复这个过程,直到整个数组有序。下面是...
    99+
    2023-08-15
    python
  • 怎么在Java项目中实现一个堆排序算法
    怎么在Java项目中实现一个堆排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。堆是数据结构中的一种重要结构,了解“堆”的概念和操作,可以帮助我们快速地掌握堆排序。堆的...
    99+
    2023-05-31
    java 堆排序算法 ava
  • 怎么在Java中利用TreeMap实现一个排序算法
    怎么在Java中利用TreeMap实现一个排序算法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一...
    99+
    2023-05-31
    java treemap 排序算法
  • java 排序算法之快速排序
    目录简单介绍基本思想思路分析代码实现推导实现完整实现大数据量耗时测试性能分析简单介绍 快速排序(Quicksort) 是对 冒泡排序的一种改进。 基本思想 快速排序算法通过多次比较和...
    99+
    2024-04-02
  • C#实现快速排序算法
    快速排序是应用最广泛的排序算法,流行的原因是它实现简单,适用于各种不同情况的输入数据且在一般情况下比其他排序都快得多。 快速排序是原地排序(只需要一个很小的辅助栈),将长度为 N 的...
    99+
    2024-04-02
  • 怎么在Java项目中利用QuickSort实现一个快速排序功能
    今天就跟大家聊聊有关怎么在Java项目中利用QuickSort实现一个快速排序功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。快速排序-----------------------...
    99+
    2023-05-31
    quicksort java
  • 利用java如何实现一个快速排序方法
    本篇文章给大家分享的是有关利用java如何实现一个快速排序方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。java 算法之快速排序实现代码摘要: 常用算法之一的快速排序算法的...
    99+
    2023-05-31
    java ava 快速排序
  • Java排序算法怎么快速上手
    本篇内容主要讲解“Java排序算法怎么快速上手”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java排序算法怎么快速上手”吧!插入排序插入排序的基本思想:每步将一个待排序元素,按其排序码大小插入...
    99+
    2023-06-27
  • PHP中怎么实现一个排序算法
    PHP中怎么实现一个排序算法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。< //插入排序(一维数组)  function ins...
    99+
    2023-06-17
  • 怎么实现及优化快速排序算法
    本篇内容主要讲解“怎么实现及优化快速排序算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么实现及优化快速排序算法”吧!前言快速排序可以说是使用最广的排序算法...
    99+
    2024-04-02
  • 使用 Python 实现快速排序算法
    快速排序是一种高效的排序算法,它采用分治法的思想进行排序。在 Python 中,我们可以使用以下代码实现快速排序算法: def quick_sort(arr): if len(arr) ...
    99+
    2023-09-02
    排序算法 算法
  • Java归并排序和快速排序怎么实现
    本篇内容介绍了“Java归并排序和快速排序怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!归并排序// 归并排序 ...
    99+
    2023-06-04
  • 如何在Java项目中实现一个快速查找算法
    如何在Java项目中实现一个快速查找算法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。快速查找算法,可以根据想要找的是第几个大的数,每次循环都能固定下来一个数在数组完整排完序之...
    99+
    2023-05-31
    java ava 目中
  • 一文快速掌握Java中的搜索算法和排序算法
    目录一、搜索算法二分算法二、排序算法冒泡排序选择排序插入排序快速排序一、搜索算法 二分算法 二分算法(Binary Search)又称折半查找,是一种高效的查找算法。它的基本思想是:...
    99+
    2023-05-14
    Java搜索算法 Java排序算法 Java算法
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作