快排的思想想必大家都懂,前后两个指针,向中间靠拢。我这个partition函数能保证所有相同的数都被比较一次,靠拢在一起。

代码:

public class Main {  public static int[] partition1(int[] arr, int begin, int end, int pivotValue) {int small = begin-1;int cur = begin;int big = end+1;while(cur!=big) {if(arr[cur] < pivotValue) {swap(arr, ++small, cur++);} else if(arr[cur] > pivotValue) {swap(arr, cur, --big);} else {cur++;}}int[] range = new int[2];range[0] = small;range[1] = big;return range;}public static void quickSort(int[] array,int low, int high) {if(array == null || array.length==0) {return;}if(low>=high) {return;}int[] res = partition1(array, low, high, array[low]);quickSort(array, low, res[0]);quickSort(array, res[1], high);}public static void main(String[] args) {int[] a = {34,2,25,1,12,34,12,56,23,15,34,12,12,54,34};quickSort(a, 0, a.length-1);for(int i=0; i<a.length; i++) {System.err.print(a[i]+" ");}}private static void swap(int[] array, int low, int high) {int temp = array[low];array[low] = array[high];array[high] = temp;}}

转载于:https://www.cnblogs.com/loren-Yang/p/7499689.html

快速排序——Java相关推荐

  1. 快速排序 Java模板

    快速排序Java模板 详情参考 https://www.acwing.com/problem/content/787/ https://www.acwing.com/solution/content/ ...

  2. 快速排序Java实现

    快速排序Java实现 快速排序是一种分治的排序算法,将一个数组分成两个数组,将两部分独立地排序.一般策略是先取基准元素,又称切分元素,从数组右边开始向左扫描直到找到一个不大于它的元素填入到右边的坑内, ...

  3. 快速排序java代码_8 种排序算法与 Java 代码实现!

    1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个有序序列 将第三个数插入进去,构成一个新的有序序列. 对第四个数.第五个数--直 ...

  4. 快速排序 java导包_排序算法-快速排序(Java实现)

    上篇我们讲了冒泡排序,这次我们讲它的升级版快速排序,"快速",一看就是个好算法~ 快速排序(QuickSort)是啥? 我们先看下百度百科的介绍快速排序(Quicksort)是对冒 ...

  5. 冒泡排序、快速排序 java代码实现

    文章目录 冒泡排序 源码实现 单元测试 优化 快速排序 源码实现 单元测试 冒泡排序 源码实现 package csdn.dreamzuora.sort;import java.util.List;/ ...

  6. 快速排序 java代码_java实现快速排序

    一:快速排序的特征 1:冒泡排序的改进 2:内部交换数据 3:分治+递归的思想 4:稳定排序 5:时间复杂度为:O(n*logn) 二:算法的整体思路 1:原始数据:12 11 6 87 23 8 5 ...

  7. 快速排序 java cutoff_排序之 快速排序

    采用算法导论上的实现方式,用java实现. 快排算法核心的部分便是partition过程,这里的partition采取最后一个元素作为pivot,i和j两个指针都从头向后扫描,如下图所示,数组被分为4 ...

  8. 十大排序算法之(二)快速排序--JAVA+C++实现(简单易懂)

    文章目录 快速排序(Quicksort) 1.实现原理: 1.1.动图展示: 1.2.实现步骤: 2.时间复杂度 3.代码实现: 3.1.JAVA 实现 3.2.C++实现 3.3.C语言实现 3.4 ...

  9. 快速排序 Java 针对重复元素

    与归并排序一样,快速排序也是采用分治策略.但是归并排序的计算量主要集中在有序子序列的合并上,而子序列的划分几乎不花费时间.快速排序恰恰相反,可以在o(1)的时间内完成子序列的合并,对于将原问题划分上需 ...

  10. 算法图解之快速排序(JAVA版本)

    阅读这篇文章就证明你已经开始踏上了算法的修仙之路,接下来我会两天一更,介绍图解算法里面的算法的实现, 适合Java程序员阅读. 文章目录 前言 一.什么是分治思想? 1.核心思想 2.案例展示 二.快 ...

最新文章

  1. ansible文档官网
  2. SpringBoot | 第三十六章:集成多CacheManager
  3. jquery版本冲突问题
  4. vue2.0中Ajax库(axios)
  5. 译:Spring Data Repository 不区分大小写查询
  6. cache 的设计与实现--转载
  7. Java程序员应该知道的10个Eclipse调试技巧
  8. asp.net core合并压缩资源文件引发的学习之旅
  9. mysql日期时间操作函数详解
  10. 转:教你如何备考PMP
  11. 2021高考成绩查询截图,科目四2021模拟考试成绩截图
  12. 黑客观察手机倾斜角度就能猜出你的密码,首次命中率高达74%!
  13. center os php,Center OS 7 Apache安装配置
  14. 网易互娱-后台开发(支付方向)二面
  15. 基于氚云平台的应用开发学习(一)
  16. Linux 权限管理深剖
  17. Python秒算24点,行还是不行?
  18. 国外著名大学计算机教学考察随笔
  19. 《 Programming Collective Intelligence》案例介绍与分析——Making Recommendations
  20. CREO草绘标注字体设置

热门文章

  1. 实验5 数据查询--连接查询
  2. ajax 服务器响应,ajax-服务器响应
  3. php having,having方法
  4. java多个页面爬取_java爬取html页面(简易通用版)
  5. hdu 5783——Divide the Sequence
  6. UVA 514——Rails
  7. 6.824 RPC lesson2 2020(二)
  8. Mac Redis安装入门教程
  9. linux操作系统之竞态条件(时序竞态)
  10. c++中多态---3(虚析构和纯虚析构,向上类型转化和向下类型转化)