java实现快速排序算法

 更新时间:2015年04月09日 11:29:14   投稿:hebedich  
快速排序算法是基于分治策略的另一个排序算法。其基本思想是:对输入的子数组a[p:r],按以下三个步骤进行排序。 1) 分解(Divide)(2) 递归求解(Conquer) (3) 合并(Merge)

1、算法概念。

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。
2、算法思想。

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

3、实现思路。

①以第一个关键字 K 1 为控制字,将 [K 1 ,K 2 ,…,K n ] 分成两个子区,使左区所有关键字小于等于 K 1 ,右区所有关键字大于等于 K 1 ,最后控制字居两个子区中间的适当位置。在子区内数据尚处于无序状态。
②把左区作为一个整体,用①的步骤进行处理,右区进行相同的处理。(即递归)
③重复第①、②步,直到左区处理完毕。

public static void quickSortByMid(int[] a, int low, int high) {
    if (low >= high)
      return;
    // 分割
    int pivot = a[low];// 基准值
    int i = low, j = high;
    while (i < j) {
      while (i < j && a[j] >= pivot)
        --j;
      a[i]=a[j];
      while (i < j && a[i] <= pivot)
        ++i;
      a[j]=a[i];
    }
    a[i]=pivot;
    quickSortByMid(a, low, i-1);
    quickSortByMid(a, i+1, high);
  }

快速排序算法示意图:

以上所述就是本文的全部内容了,希望对大家学习java快速排序算法有所帮助。

相关文章

  • IDEA未配置SQL方言:无法使用SQL提示解决方法

    IDEA未配置SQL方言:无法使用SQL提示解决方法

    在使用IDEA进行SQL开发时,如果未配置SQL方言可能会导致一些问题,如无法正确识别数据库中的关键字、数据类型等,这篇文章主要给大家介绍了关于IDEA未配置SQL方言,无法使用SQL提示解决方法的相关资料,需要的朋友可以参考下
    2024-07-07
  • JSP页面无法识别EL表达式问题解决方案

    JSP页面无法识别EL表达式问题解决方案

    这篇文章主要介绍了JSP页面无法识别EL表达式问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • SpringSecurity6自定义JSON登录的实现

    SpringSecurity6自定义JSON登录的实现

    目前最新版的Spring Boot已经到了3.0.5了,随之而来Spring Security 目前的版本也到了6.0.2了,Spring Security写法的变化特别多,本文就来介绍下,感兴趣的可以了解一下
    2023-12-12
  • MyBatis-Plus与PageHelper依赖的jsqlparser库冲突

    MyBatis-Plus与PageHelper依赖的jsqlparser库冲突

    在升级SpringBoot到3.x版本的同时,升级MyBatis-Plus后发现PageHelper无法使用,原因是MyBatis-Plus和PageHelper都依赖jsqlparser库,且PageHelper要求特定版本的jsqlparser,解决方法是在项目中排除这两个库的jsqlparser依赖,直接引用jsqlparser4.7版本
    2024-10-10
  • 利用Java如何实现将二维数组转化为链式储存

    利用Java如何实现将二维数组转化为链式储存

    链式结构不要求逻辑上相邻的节点在物理位置上也相邻,节点间的逻辑关系是由附加的指针字段表示的,通常借助于程序设计中的指针结构来实现,这篇文章主要给大家介绍了关于利用Java如何实现将二维数组转化为链式储存的相关资料,需要的朋友可以参考下
    2021-12-12
  • JavaWeb实现上传文件功能

    JavaWeb实现上传文件功能

    这篇文章主要为大家详细介绍了JavaWeb实现上传文件功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • spring boot(一)之入门篇

    spring boot(一)之入门篇

    Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。接下来通过本文给大家介绍spring boot入门知识,需要的朋友参考下吧
    2017-05-05
  • springboot远程debug调试全过程

    springboot远程debug调试全过程

    这篇文章主要介绍了springboot远程debug调试全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • springboot 注册服务注册中心(zk)的两种方式详解

    springboot 注册服务注册中心(zk)的两种方式详解

    本文通过一个demo讲述一下这两种注册方式,使用的是传统的向zk注册的方案。对springboot 注册zk的相关知识感兴趣的朋友一起看看吧
    2018-01-01
  • Java Swing JTextArea文本区域的实现示例

    Java Swing JTextArea文本区域的实现示例

    这篇文章主要介绍了Java Swing JTextArea文本区域的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12

最新评论