数据算法之快速排序(quickSort)的Java实现
本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
快速排序的基本思想是通过一个枢轴,将比枢轴小的数排在枢轴左边,将比枢轴大的数字排在枢轴右边,然后再对两边分别快速排序。
如图所示
输入:数据元素数组r,划分序列区间[low..high]
输出:将序列划分为两个子序列并返回枢轴元素的位置
private int partition(Object[] r, int low, int high){Object pivot = r[low]; //使用r[low]作为枢轴元素while (low<high){ //从两端交替向内扫描while(low<high&&strategy.compare(r[high],pivot)>=0) high--;r[low] = r[high]; //将比pivot 小的元素移向低端while(low<high&&strategy.compare(r[low],pivot)<=0) low++;r[high] = r[low]; //将比pivot 大的元素移向高端}r[low] = pivot; //设置枢轴return low; //返回枢轴元素位置
}
输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序
public void quickSort(Object[] r, int low, int high){if (low<high){int pa = partition(r,low,high);quickSort(r,low,pa-1);quickSort(r,pa+1,high);}
}
数据算法之快速排序(quickSort)的Java实现相关推荐
- 【排序算法】快速排序原理及Java实现
1.基本思想: 快速排序是我们之前学习的冒泡排序的升级,他们都属于交换类排序,都是采用不断的比较和移动来实现排序的.快速排序是一种非常高效的排序算法,它的实现,增大了记录的比较和移动的距离,将关键字较 ...
- 数据算法之冒泡排序(bubbleSort)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 冒泡的基本思想是拿一个数与 ...
- 数据算法之插入排序(insertSort)的Java实现
本文的代码来自于<数据结构与算法(JAVA语言版)>,是笔者在网上找到的资料,非正式出刊版物.笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论. 插入排序方法的思想是,先以 ...
- 十大排序算法之快速排序(两种方法)
十大排序算法之快速排序 本文采用Java书写选择排序,其他语言类似可以借鉴着写 思想:在待排序序列中选择一个分割元素,将待排序序列中所有比分割元素关键字小的元素移动到分割元素左侧位置:将待排序序列中所 ...
- 快速排序(QuickSort)算法介绍
算法简介 快速排序(Quicksort)是对冒泡排序的一种改进算法.由C. A. R. Hoare在1960年提出.该算法使用广泛.效率很高,是最重要的排序算法之一. 该算法的实现基本可分为以下几步: ...
- linux公社 java算法_Java快速排序算法
快速排序算法思想: 快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一 ...
- java 蓝桥杯算法训练 快速排序
试题 算法训练 快速排序 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 快速排序是最经常使用的一种排序方式,对于给定的n个数组成的一个数组,请使用快速排序对其进行排序. 现给定一序 ...
- 快速排序(quicksort)算法实现
快速排序(quicksort)是分治法的典型例子,它的主要思想是将一个待排序的数组以数组的某一个元素X为轴,使这个轴的左侧元素都比X大,而右侧元素都比X小(从大到小排序).然后以这个X在变换后数组的 ...
- 排序算法之快速排序(Java)
快速排序 平均时间复杂度 O(NlogN) 最差时间复杂度O(N*N) 不稳定 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据 ...
最新文章
- 一套Semantic-UI的前端界面
- AttributeError: 'numpy.ndarray' object has no attribute 'value_counts'
- 有限状态自动机java实现_用java开发编译器之:Thompson构造,将正则表达式转换为有限状态自动机...
- 递归转化成非递归过程_8086微处理器中的递归和重入过程
- 分享最新40款免费的 WordPress 主题(上篇)
- HDU 1257 - 最少拦截系统
- 【原】jQuery easyUI 快速搭建前端框架
- elementUI压缩图片和将图片转成base64格式
- delphi const
- java基本的商品管理系统
- R数据分析:样本量计算的底层逻辑与实操,pwr包
- 微信小程序 多标签选择和添加标签
- 用了很多群控与云控,微信还是慢慢死掉了
- Spring Boot学习8——Redis
- 英特尔服务器级cpu型号含义,新手必看 英特尔移动CPU命名规则解析
- RxJava学习 - 11. Switching, Throttling, Windowing, and Buffering
- 逢七过,逢七坐,逢七出列。。。 。。。各种叫法都有
- 英语天天读】Cultivating a Hobby
- 国外计算机图书月旦评
- zabbix3.0 安装方法,一键实现短信、电话、微信、APP 告警
热门文章
- Python+Matplotlib绘制带误差线的柱状图
- 微课|中学生可以这样学Python(例3.1):闰年判断
- Python基于用户协同过滤算法的电影推荐代码demo
- C++ const对成员函数的修饰 及 取地址及const取地址操作符重载
- 逻辑与计算机科学之间有什么联系,数学、逻辑与计算机科学的关系
- java mian 方法_Java mian函数
- 车仪表台上的装饰_给车“纹身”贴这些的注意,有人挨罚啦!扣不扣分?!看这里...
- (C语言)人名排序,字符串排序
- vsphere通用配置_vSphere各版本功能对比及简介
- 三星电视机的极光TV显示服务器异常,三星液晶电视机故障有哪些 三星液晶电视机故障解决方法【图文】...