【排序】快速排序
时间:2022-07-25
本文章向大家介绍【排序】快速排序,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
/**
* 快速排序
* @param a
* @param low
* @param high
*/
public static void quickSort(int[] a, int low, int high) {
int l = low;
int h = high;
if (l >= h) {
return;
}
int temp = a[l];
// 此循环完成了一趟排序,将数组中小于temp的数放在左边,大于temp的元素放在右边
while (l < h) {
while (h > l && a[h] > temp) { // 从右往左扫描找到第一个小于temp的元素
h--;
}
if(l<h){
a[l] = a[h]; // 放在temp左边
l++; // i指针右移一位
}
while (l<h&& a[l] < temp) { // 从左往右扫描找到第一个大于temp的元素
l++;
}
if(l<h){
a[h] = a[l]; // 放在temp右边
h--; // h左移一位
}
}// end 一趟排序
a[l] = temp; // 将temp放在最终位置
quickSort(a, low, l-1); // 递归对temp左边元素进行排序
quickSort(a, l+1, high); // 递归对temp右边的元素进行排序
}
public static void main(String[] args) {
int[] a = { 5, 4, 3, 2, 1 };
quickSort(a, 0, a.length-1);
for (int num : a) {
System.out.print(num + " ");
}
}
时间复杂度:最好O(nlogn) 最差O(n*n) 平均O(nlogn)
空间复杂度:O(nlogn) 因为需要栈空间辅助
是否稳定:不稳定
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 小书MybatisPlus第5篇-Active Record模式精讲
- Python 语法问题-module ‘pip._internal‘ has no attribute ‘pep425tags‘. 原因及解决办法,32位、64位查看pip支持万能方法
- 总在说 Spring Boot 内置了 Tomcat 启动,那它的原理你说的清楚吗?
- JavaScript 技巧篇-js增加延迟时间解决单击双击事件冲突,双击事件触发单击事件
- Python 技术篇-sha256()加密的使用方法,sha1、md5加密方法
- Python 技术篇-如何打印一段文字,用友云霸气控制台颜文字打印
- Python 技术篇-获取秒级时间戳、毫秒级时间戳
- Python 技术篇-基于随机数的uuid码的生成
- BAT 脚本技术-利用bat批处理脚本静态指定ip地址、自动获取ip地址设置
- Oracle 技巧篇-快速批量删除当前数据库连接的用户,一键清空所有session会话方法
- Spring Security 中如何细化权限粒度?
- 小书MybatisPlus第4篇-表格分页与下拉分页查询
- 小书MybatisPlus第3篇-自定义SQL
- Nginx + Spring Boot 实现负载均衡
- 小书MybatisPlus第2篇-条件构造器的应用及总结