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

十大排序算法--快速排序

目录

原理

第一步 

第二步

代码

递归实现快速排序

原理

分治法核心步骤

  1. 选择基准值(Pivot)
    从数组中选一个元素作为基准值(如最右侧元素、中间元素或随机元素)。

  2. 分区(Partition)
    将数组分为两部分:

    • 左侧:所有元素 小于等于 基准值。

    • 右侧:所有元素 大于等于 基准值。
      基准值最终位于正确的位置(排序后的最终位置)。

  3. 递归排序子数组
    对左右子数组递归执行上述步骤,直到子数组长度为 1 或 0(已有序)。

 以下面这一组数字为例

第一步 

找一个基准值,这里以46为基准 

从后面往前找比基准值小的交换,从前面找比基准值大的交换。

        1.发现 7比46小,然后7现在就排在第一个。

        2.从前面找比46大的,找啊找,找到了94比46大,我们就把94放到原来7的位置,94也就是基准值的位置了,这样就完成了第一步。

 

第二步

经过第一步已经找到基准值的位置,从这里开始进行递归,对基准值左边与右边分别进行递归排序,直到排序完成。

代码

下面是递归代码展示:

import java.util.Arrays;/*** 快速排序* 先确定一个基准点* 将比基准值小的放在基准值左边,比基准值大的放在右边* 递归进行* 从后往前找比基准值小的并交换* 从前往后找比基准值大的并交换*/
public class FastSort {public void sort(int[] arr, int left, int right) {if (left >= right) {return;}int pivot = arr[left];int i = left;int j = right;while (i < j) {while (i < j && arr[j] > pivot) {j--;}if (i < j) {arr[i] = arr[j];i++;}while (i < j && arr[i] < pivot) {i++;}if (i < j) {arr[j] = arr[i];j--;}}arr[i] = pivot;sort(arr, left, i - 1);sort(arr, i + 1, right);}public static void main(String[] args) {int arr[] = {46, 5, 3, 94, 2, 6, 7};FastSort f = new FastSort();System.out.println("排序前" + Arrays.toString(arr));f.sort(arr, 0, arr.length - 1);System.out.println("排序后" + Arrays.toString(arr));}}

结果页不出所料 

时间复杂度

快速排序的平均时间复杂度为O(nlogn),但最坏情况下也可以达到O(n2)。 

相关文章:

  • CBCharacteristic:是「特征」还是「数据通道」?
  • 独热编码笔记
  • idea本地debug断点小技巧
  • PCB设计教程【入门篇】——电路分析基础-基本元件(二极管三极管场效应管)
  • OpenCV图像边缘检测
  • 第11天-Python GUI开发实战:Tkinter从入门到项目实践
  • Java 05正则表达式
  • DAY28 超大力王爱学Python
  • 海外盲盒系统开发:重构全球消费体验的科技引擎
  • 探秘隐形冠军|安贝斯携手武汉科创协会x深钣协推进“江浙皖行”,揭秘华荣科技的创新破局
  • 矩阵的秩(Rank)
  • SpringBoot整合LangChain4J
  • 【JavaWeb】MyBatis
  • SAP-ABAP:SAP的`TRY...CATCH` 异常处理机制详解
  • Jenkins服务器配置密钥对
  • OpenCv高阶(8.0)——答题卡识别自动判分
  • 【LeetCode 热题 100】有效的括号 / 最小栈 / 字符串解码 / 柱状图中最大的矩形
  • Elasticsearch 实战面试题,每个题目都会单独解析
  • 多类型RFID电子标签定制 助力行业精准化管理
  • 在hadoop中实现序列化与反序列化
  • 调查:“笔枪”风靡校园存隐患,平台应为手工教学视频设红线
  • 美国公布新型核弹B61-13,威力是广岛原子弹的21倍
  • MiniMax发布新一代语音大模型
  • 吴双评《发展法学》|穷国致富的钥匙:制度,还是产业活动?
  • 聘期三年已至:37岁香港青年叶家麟卸任三亚市旅游发展局局长
  • 天问二号探测器顺利转入发射区