快速排序
1.快速排序法简介
在数组中选一个基准数;
将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;
对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个元素,即为全部有序。
2.快速排序法图解
3.代码
public class QuickSort { public static void main(String[] args) { int[] arr = {-9, 78, 0, 23, -456, 70, -1, 900, 4561, 21}; quickSort(arr, 0, arr.length - 1); System.out.println(Arrays.toString(arr)); } public static void quickSort(int[] arr, int left, int right) { int leftIndex = left;//待排序数组左下标 int rightIndex = right;//待排序数组右下标 int pivot = arr[(leftIndex + rightIndex) / 2];//数组的中间值 int temp = 0;//用于交换 //将所有比pivot大的值放到pivot右边,小的放到pivot左边 while (leftIndex < rightIndex) { //在pivot的左边找到一个大于等于pivot大的数时退出 while (arr[leftIndex] < pivot) { leftIndex += 1; } while (arr[rightIndex] > pivot) { rightIndex -= 1; } //leftIndex>=rightIndex:此时pivot左右两边已找完,退出while循环 if (leftIndex >= rightIndex) { break; } //交换 temp = arr[leftIndex]; arr[leftIndex] = arr[rightIndex]; arr[rightIndex] = temp; //如果交换完后,arr[leftIndex] == pivot,则rightIndex-- if (arr[leftIndex] == pivot) { rightIndex--; } //如果交换完后,arr[rightIndex] == pivot,leftIndex++ if (arr[rightIndex] == pivot) { leftIndex++; } } //如果leftIndex == rightIndex;必须leftIndex++,rightIndex--,否则栈会溢出 if (leftIndex == rightIndex) { rightIndex--; leftIndex++; } //左递归 if (left < rightIndex) { quickSort(arr, left, rightIndex); } //右递归 if (right > rightIndex) { quickSort(arr, leftIndex, right); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix