成为专业认证的快速排序是一种分而治之的算法。在分治算法的设计范式中,我们先递归地将问题分解成子问题,然后再求解子问题,最后将求解结果进行组合得到最终结果。在本文中,我们将重点讨论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]

java中求组快速排序函数,如何在Java中实现快速排序?相关推荐

  1. python 中定义的函数 如何在main中调用_在python中,在定义类时自动运行函数的方法?_class_酷徒编程知识库...

    类定义时初始化类属性,不需要函数.import numpy as np class Foo: bar = np.range(100) def __init__(self): # etc. 如果要在导入 ...

  2. java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?

    java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...

  3. MYSQL中的REPLACE函数,以及Hive中的regexp_replace的用法

    MYSQL中的REPLACE函数,以及Hive中的regexp_replace的用法 一.repacle是什么? 二.使用步骤 1.实践是检验真理的唯一标准 2.Hive中的替换函数regexp_re ...

  4. java如何实取随机数_java - 如何在Kotlin中获取随机数?

    java - 如何在Kotlin中获取随机数? 可以在2个参数之间返回随机整数的通用方法,如ruby,可以使用rand(0..n). 有什么建议吗? 16个解决方案 208 votes 我的建议是In ...

  5. java中为什么同步_如何在Java中同步工作

    如何在Java中同步工作 首先, 这是一个示例 : public class Deadlock { static class Friend { private final String name; p ...

  6. java 精确到微妙_如何在Java中以微秒精度测量时间?

    我在Internet上看到应该使用System.nanoTime(),但这对我不起作用-它为我提供了毫秒级的时间.我只需要函数执行前后的微秒,就可以知道需要多长时间.我正在使用Windows XP. ...

  7. java 中覆 写tostring_如何在Java中正确覆盖toString()?

    如何在Java中正确覆盖toString()? 听起来有点愚蠢,但我需要帮助我的toString()方法,这是非常irking. 我尝试在网上查找,因为toString是搞砸了,"没有找到K ...

  8. java中转json字符串_如何在Java中转义JSON字符串-Eclipse IDE技巧

    java中转json字符串 在Java应用程序中工作或进行JSON解析时,通常很常见的做法是从某些资源(例如RESTful Web服务)中复制粘贴JSON字符串,然后使用Jackson库解析JSON. ...

  9. java整数的因式分解_如何在Java中找到整数的质数-因式分解

    java整数的因式分解 编程课程中的常见家庭作业/任务之一是关于Prime Factorization. 要求您编写一个程序以找到给定整数的素因子 . 一个数字的素数因子是将精确地除以给定数字的所有素 ...

最新文章

  1. sqlalchemy安装以及使用_电子皮带秤的安装使用条件以及对输送机的要求
  2. 以太坊白皮书_区块链60讲第33集~什么是以太坊?
  3. ASP.NET中String.IndexOf 方法的使用
  4. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170327
  5. 浅析Java的“克隆”方法[zt]
  6. Intellij IDE 必知配置
  7. C语言:运算符,表达式与语句
  8. 计算机程序设计社团,学生社团管理系统
  9. RFID技术正助力物流行业进入新时代
  10. rdd与mysql表 join_Spark 之RDD
  11. 微软创投加速器最新成果展示:人工智能技术杀入时尚界
  12. maya的颤动怎么做_为什么maya视窗跳动闪烁
  13. 如何装计算机网络驱动,网卡驱动安装,详细教您电脑网卡驱动怎么安装
  14. DJYOS开发板系列之一:基于BK7251开发的ZQ1401物联屏开发板
  15. Python笔记五(写excel,加密模块,字典排序,常用的标准模块,操作mysql,时间模块)...
  16. 怎样提高平面设计色彩表现力
  17. 并查集+思维——Destroying Array
  18. 2021-2027全球与中国美容淋浴器市场现状及未来发展趋势
  19. cassandra install troubleshooting
  20. 【BZOJ】1615: [Usaco2008 Mar]The Loathesome Hay Baler麻烦的干草打包机(模拟+bfs)

热门文章

  1. oracle数据库从AIX环境expdp迁移到linux环境(sec_case_sensitive_logon=true导致连接报错ORA-01017)
  2. nvarchar(max)和表扫描
  3. Java 初始化 代码块_Java中初始化块详解及实例代码
  4. 玩转SpringBoot 2 快速搭建 | Spring Initializr 篇
  5. js实现关于分页的一种实现方式
  6. 如何利用计算机实现非线性转换,基于cass数控绕线机非线性算法的设计与实现-计算机应用技术专业论文.docx...
  7. oracle 约束 年份,如何在Oracle中确定给定年份是否为Le年?
  8. 剑指offer:数据流中的中位数(小顶堆+大顶堆)
  9. 1269: [AHOI2006]文本编辑器editor
  10. java中的容器问题