快速排序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. 如何修改作者名称_PS2019中如何扩展文本选区 ps扩展文本选区的图文教程_photoshop教程...
  2. 整合基因组学和蛋白质结构的致病机制分析
  3. 寄存器相互映射是什么意思_STM32入门系列-STM32外设地址映射
  4. 一图梳理企业数据治理的8项举措
  5. CVPR 2021 Oral | Transformer!UP-DETR:无监督预训练检测器
  6. http/https 协议(概略)
  7. 组合优化中的P问题,NP问题,NP-complete问题和NP-hard问题
  8. C++ 在栈上分配内存
  9. mac废纸篓的如何还原?
  10. HTML5学习第6篇—video:自己实现video的播放控件(添加样式版)
  11. 使用java的方式配置Spring---JavaConfig
  12. 用python操作浏览器的三种方式,详细介绍并附代码
  13. svm和k-最近邻_使用K最近邻的电影推荐和评级预测
  14. LWN:万维网之外的选择!
  15. 秋招硬件设计岗,offer拿到手软,是一种什么体验?
  16. Python正则表达式re库
  17. android 陀螺仪滤波_Arduino+mpu6050陀螺仪运用卡尔曼滤波姿态解算实验
  18. 前端token知识:token如何存储?token过期如何处理?
  19. OpenCV Error: Unspecified error (could not find a writer for the specified extension) in imwrite
  20. 云呐|机房监控服务平台,机房监控服务平台有哪些

热门文章

  1. 平面中判断线段与矩形是否相交
  2. Element 调用接口
  3. 奇数阶反对称行列式等于0
  4. docker容器地址映射
  5. java file转输入流_Java转换流
  6. 三星GalaxyZFold4什么时候上市 三星GalaxyZFold4配置如何
  7. 使用 rnn 训练词向量模型
  8. nvme固态必须uefi启动吗_听说这招能在3秒内启动Windows10,很多高手都这么做,你知道吗?...
  9. NBUT 1120 Reimu's Teleport (线段树)
  10. 【AIS学习】03:A级与B级区别