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快速排序算法有所帮助。

相关文章

  • Java中几个Reference常见的作用详解

    Java中几个Reference常见的作用详解

    这篇文章主要给大家介绍了Java中关于Reference多个作用的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-06-06
  • Maven的pom.xml文件结构中的build

    Maven的pom.xml文件结构中的build

    本文主要介绍了Maven的pom.xml文件结构中的build,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 基于mybatis-plus QueryWrapper 排序的坑

    基于mybatis-plus QueryWrapper 排序的坑

    这篇文章主要介绍了mybatis-plus QueryWrapper 排序的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • java使用this调用构造函数的实现方法示例

    java使用this调用构造函数的实现方法示例

    这篇文章主要介绍了java使用this调用构造函数的实现方法,结合实例形式分析了java面向对象程序设计中函数调用相关操作技巧,需要的朋友可以参考下
    2019-08-08
  • 浅谈MyBatis原生批量插入的坑与解决方案

    浅谈MyBatis原生批量插入的坑与解决方案

    本文主要介绍了浅谈MyBatis原生批量插入的坑与解决方案,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 利用Java反射机制实现对象相同字段的复制操作

    利用Java反射机制实现对象相同字段的复制操作

    这篇文章主要介绍了利用Java反射机制实现对象相同字段的复制操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 使用jvm sandbox对三层嵌套类型的改造示例

    使用jvm sandbox对三层嵌套类型的改造示例

    这篇文章主要为大家介绍了使用jvm sandbox对三层嵌套类型的改造示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 排序算法图解之Java插入排序

    排序算法图解之Java插入排序

    插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。本文通过图片合示例讲解了插入排序的实现,需要的可以了解一下
    2022-11-11
  • SpringBoot Web依赖教程

    SpringBoot Web依赖教程

    这篇文章主要介绍了SpringBoot Web依赖教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    springboot+nginx+https+linux实现负载均衡加域名访问简单测试

    这篇文章主要介绍了springboot+nginx+https+linux实现负载均衡加域名访问简单测试,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05

最新评论