快速排序
1、快速排序介绍
快速排序 (Quicksort) 是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分。
其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。
整个排序过程可以递归进行,以此达到整个数据变成有序序列
2、基本思想
- 选定Pivot中心轴
- 将大于Pivot的数字放在Pivot的右边
- 将小于Pivot的数字放在Pivot的左边
- 分别对左右子序列重复前三步操作
3、实现代码
import java.util.Arrays; public class Test05_快速排序Demo2 { public static void main(String[] args) { int[] arr = {19, 97, 9, 17, 1, 8}; sort(arr, 0, arr.length - 1); System.out.println("排序结果为:" + Arrays.toString(arr)); } /** * @param arr 数组 * @param left 数组最左边下标 * @param right 数组最右边下标 * @return 返回中心轴的下标位置 */ public static int getMid(int[] arr, int left, int right) { int pivot = arr[left]; while (left < right) {
//left<right条件不变,最右边的数据如果大于中心轴,就让right向左移,然后继续比较 while (left < right && arr[right] >= pivot) right--; arr[left] = arr[right]; while (left < right && arr[left] <= pivot) left++; arr[right] = arr[left]; } //left与right重合,就将中心轴所指向的数字放到重合位置上 if (left == right) arr[right] = pivot; return left; } /** * 对分割的区间进行快排 * * @param arr * @param left * @param right */ public static void sort(int[] arr, int left, int right) { if (left < right) { int mid = getMid(arr, left, right); sort(arr, left, mid - 1);//中心轴左边的区间快排 sort(arr, mid + 1, right);//中心轴右边的区间快排 } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话