【排序算法】快速排序
1 前言
今天把排序的几个算法过一下,这节我们看一下快速排序,简单的来说就是先找位置再拆,我们看示例。
2 代码示例
/** * 快速排序 * 快排主要就是先找位置再拆 */ public static void quickSort(int[] arr, int start, int end) { // 递归的出口 if (start >= end) { return; } // 左右的位置索引 int leftIndex = start; int rightIndex = end; // 默认先将左侧的作为标杆,进行位置查找 int temp = arr[leftIndex]; // 当左右未相遇时 while (leftIndex < rightIndex) { // 从右边找如果比标杆大于等于的就继续--,直到找到一个小的 while (arr[rightIndex] >= temp && leftIndex < rightIndex) { rightIndex--; } // 从左边找如果比标杆小于等于的就继续++,直到找到一个大的 while (arr[leftIndex] <= temp && leftIndex < rightIndex) { leftIndex++; } // 如果左右未相遇,说明左右都各找到一个了,进行两者的交换,然后继续 if (leftIndex < rightIndex) { int z = arr[leftIndex]; arr[leftIndex] = arr[rightIndex]; arr[rightIndex] = z; } } /** * 将找到的位置和标杆的值进行交换 */ arr[start] = arr[leftIndex]; arr[leftIndex] = temp; // 左侧进行递归 quickSort(arr, start, rightIndex); // 右侧进行递归 quickSort(arr, rightIndex+1, end); } public static void main(String[] args) { int[] arr = IntStream.generate(() -> ThreadLocalRandom.current().nextInt(10000)).limit(10000).toArray(); System.out.println("排序前:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(","))); quickSort(arr, 0, arr.length - 1); System.out.println("排序后:" + Arrays.stream(arr).mapToObj(String::valueOf).collect(Collectors.joining(","))); }
3 小结
有写的不对的地方,欢迎指正哈。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了