快速排序Java实现

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

public class QuickSort {public static void quickSort(int[] data, int left, int right){if(left < right){int i = left, j = right, tmp = data[left];while (i < j){while(i < j && data[j] > tmp) //从右往左找不大于tmp的数据j--;if(i < j)data[i++] = data[j]; //将不大于tmp的数据填入到左边的坑内while(i < j && data[i] < tmp)  //从左往右找不小于tmp的数据i++;if(i < j)data[j--] = data[i]; //将不小于tmp的数据填入到右边的坑内}data[i] = tmp; //将基准数据放入到剩余的坑内quickSort(data, left,i-1); //采用分治法的思想先左边再右边quickSort(data, i+1, right);}}public static void main(String[] args) {int[] a = {49, 38, 65, 97, 76, 13, 27, 50};quickSort(a,0, a.length -1);for(int b : a)System.out.print(b + " ");}
}

快速排序Java实现相关推荐

  1. 快速排序 Java模板

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 如何利用深度学习知识--快速部署高速目标检测智能小车?
  2. 基于长度特征的三文鱼好sea bass的区分,sesbass 比三文鱼长
  3. 电路邱关源第五版pdf_硬件狗教你学电路【二】:电路分析方法
  4. 如何创建一个完美的单例模式
  5. hanlp中文分词、提取摘要关键字、语句分析、智能推荐
  6. TCP三次握手和四次挥手过程
  7. UE3 MemLeakCheck Tracking(内存泄露检测追踪)
  8. (转)从零实现3D图像引擎:(5)3D坐标系函数库
  9. OCR:深度学习-目标检测-超详细图解Faster R-CNN
  10. Python Tricks(十二)—— 有理数的加法
  11. IS-IS详解(十五)——IS-IS 认证
  12. JAVA实现上传,下载,jxl操作Excel和邮件发送
  13. PHP编写学生信息表格
  14. 利用python画一些简单图像
  15. 未能连接驱动人生服务器怎么解决,重装系统后无法上网?驱动人生提供3个解决方案...
  16. Honor V10 BKL-AL20 ROOT(Magisk方式)
  17. 摄影测量与遥感数据精度表格
  18. HDOJ Problem - 1299
  19. QScrollArea 动态添加控件问题
  20. 电脑重装系统word从第二页开始有页眉页脚如何设置

热门文章

  1. Java的形参、实参与传值调用、传地址调用
  2. JAVA程序设计(01)-----英制公制,单位转换
  3. 微信二次开发接入php代码,适合新手学习的laravel接入微信接口,实现微信公众号二次开发...
  4. Python开发常用IDE有哪些
  5. JAVA-STUDY
  6. centos7.5 yum卸载重装
  7. 41.XDMA寄存器详解5-H2C SGDMA/C2H SGDMA寄存器组剖析
  8. 总线锁,缓存锁,emsi
  9. 迅为IMX6开发板OTA远程升级-SWUpdata概述和使用
  10. Shell之${BASH_REMATCH}