当前位置: 首页 > java >正文

面试手撕——快速排序

思路

partition方法将整个区间分为两部分,一部分比pivot小,一部分比pivot大,
i表示,小于等于pivot的下标,j表示当前遍历到哪一个元素了,如果发现当前元素j小于等于pivot,i++,在i+1的位置和 j 交换位置,最后还要将pivot放在i + 1的位置,也返回i + 1,此时 数组被分成了两部分,pivot左边的,都比pivot小,右边的都比pivot大

代码


public class QuickSort {public static void quickSort(int[] arr, int low, int high){// low 等于 high时,不需要排序了, 左闭右闭的关系if(low < high){int pivotIndex = partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex+1, high);}}private static int partition(int[] arr, int low, int high){int pivot = arr[high];int i = low - 1;for(int j = low; j < high; j++){if(arr[j] <= pivot){i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}int temp = arr[i+1];arr[i + 1] = arr[high];arr[high] = temp;return  i + 1;}public static void main(String[] args) {int []arr = {10, 7, 8, 9, 1, 5};System.out.println("排序前:");for(int num: arr){System.out.print(num + " ");}quickSort(arr, 0, arr.length - 1);System.out.println("\n排序后: ");for(int num: arr){System.out.print(num + " ");}}}
http://www.xdnf.cn/news/2940.html

相关文章:

  • 高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解
  • 【AlphaFold2】Feature extraction:提取特征,为模型输入做准备|Datapipeline讲解
  • 【AI微信小程序开发】掷骰子小程序项目代码:自设骰子数量和动画(含完整前端代码)
  • 为网页LOGO视频增加电影质感表现
  • AbortController 取消请求
  • Lucene 分词工具全解析与对比指南
  • PDF Shaper v15.0
  • AI工具的应用体验---------一键生成个人的微信名片
  • Linux Vim 使用 显示行号、替换、查找、多文件打开等骚操作
  • 双重差分模型学习笔记(理论)
  • Vue2 相关知识点整理
  • 从技术视角解析百度文库AI的核心竞争力与行业启示
  • 【统计方法】交叉验证:Resampling, nested 交叉验证等策略 【含R语言】
  • 非凸科技受邀出席AI SPARK活动,共探生成式AI驱动金融新生态
  • Vue3 Echarts 3D圆形柱状图实现教程以及封装一个可复用的组件
  • 高效 Transformer 的综述
  • AGILE:开启LLM Agent强化学习的创新框架
  • CSdiy java 06
  • Spark,集群搭建-Standalone
  • 小结:PKI(Public Key Infrastructure,公钥基础设施)
  • Python爬虫(10)Python数据存储实战:基于pymongo的MongoDB开发深度指南
  • npm打包内存不足- JavaScript heap out of memory
  • SQLMesh增量模型实战指南:时间范围分区
  • 对比测评:为什么AI编程工具需要 Rules 能力?
  • 借助云蝠智能大模型呼叫,打造企业招聘竞争力
  • 如何强制触发 OpenShift 节点的 MachineConfig 更新
  • GC的查看
  • MySQL事务隔离级别的实现原理MVCC
  • 今日行情明日机会——20250429
  • UEC++第15天|番茄插件、实现跳跃、实现背景运动