我叫:快速排序【JAVA】

news/2024/11/17 18:33:08/

1.自我介绍

1.快速排序是由东尼·霍尔所发展的一种排序算法。

2.快速排序又是一种分而治之思想在排序算法上的典型应用。

3.本质上来看,快速排序应该算是在冒泡排序基础上的递归分治法。

2.思想共享 

快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

3.思路分析

  1. 从数列中挑出一个元素,称为 "基准"(pivot);

  2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作;

  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序;

  

4.实战分析

   public static void quickSort(int[] array, int left, int right) {int l = left; //左下标int r = right;//右下表int temp = 0; //临时变量//pivot 中轴值int pivot = array[(l + r) / 2];//让比pivot小的值放到左边,比pivot大的值放到右边while (l < r) {while (array[l] < pivot) {// 左边直到找到>=pivotl += 1;}while (array[r] > pivot) {// 右边直到找到<=pivotr -= 1;}if (l >= r) { //说明pivot左边的都<=pivot,右边的都>=pivotbreak;}//交换temp = array[l];array[l] = array[r];array[r] = temp;//如果交换完之后,发现arr[l]==pivot,r--;,前移if (array[l] == pivot) {r -= 1;}//如果交换完之后,发现arr[r]==pivot,l++;,前移if (array[r] == pivot) {l += 1;}}//如果l==r,l++;r--;否则栈溢出if (l == r) {l += 1;r -= 1;}//向左递归if (left < r) {quickSort(array, left, r);}//向右递归if (right > l) {quickSort(array, l, right);}}

5.心惊胆战的执行一下

       int[] arr = new int[]{-9, 78, 0, 23, -567, 70};quickSort(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));

 

 


http://www.ppmy.cn/news/1236990.html

相关文章

计算机网络——物理层相关习题(计算机专业考研全国统考历年真题)

目录 2012-34 原题 答案 解析 2018-34 原题 答案 解析 2009/2011-34 原题 答案 解析 2016-34 原题 答案 解析 2014-35/2017-34 原题 答案 解析 2013-34 原题 答案 解析 2015-34 原题 答案 解析 物理层的协议众多&#xff0c;这是因为物理层…

uniapp链接WebSocket 常用的api

UniApp是一个基于Vue语法的跨平台应用开发框架&#xff0c;它支持使用WebSocket来实现实时双向通信。WebSocket是一种在单个TCP连接上进行全双工通信的协议&#xff0c;它可以在客户端和服务器之间建立持久性的连接&#xff0c;并允许双向通信。在UniApp中&#xff0c;你可以使…

解决:ImportError: cannot import name ‘Adam‘ from ‘keras.optimizers‘

解决&#xff1a;ImportError: cannot import name ‘Adam‘ from ‘keras.optimizers‘ 背景 在使用之前的代码时&#xff0c;报错&#xff1a; from keras.optimizers import Adam ImportError: cannot import name ‘Adam’ 报错问题 from keras.optimizers import Adam I…

FFmpeg常用命令讲解及实战二

文章目录 前言一、ffmpeg 常用命令1、ffmpeg 的封装转换2、ffmpeg 的编转码3、ffmpeg 的基本编转码原理 二、ffprobe 常用参数1、show_format2、show_frames3、show_streams4、print_format5、select_streams 三、ffplay 的常用命令1、ffplay 常用参数2、ffplay 高级参数3、ffp…

51单片机利用I/O口高阻状态实现触摸控制LED灯

51单片机利用I/O口高阻状态实现触摸控制LED灯 1.概述 这篇文章介绍使用I/O口的高阻状态实现一个触摸控制LED灯亮灭的实验。该实验通过手触摸P3.7引脚&#xff0c;改变电平信号控制灯的亮灭。 2.实验过程 2.1.实验材料 名称型号数量单片机STC12C20521LED彩灯无1晶振12MHZ1电…

基于JavaWeb+SSM+Vue微信阅读小程序的设计和实现

基于JavaWebSSMVue微信阅读小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 1 第2章 开发环境与技术 3 2.1 MYSQL数据库 3 2.2 JSP技…

Python中match-case语法: 引领新的模式匹配时代

更多Python学习内容&#xff1a;ipengtao.com Python在其最新的版本中引入了match-case语法&#xff0c;这是一项强大的功能&#xff0c;为开发者提供了更加灵活和直观的模式匹配方式。本文将深入探讨match-case的各个方面&#xff0c;并通过丰富的示例代码&#xff0c;帮助大家…

Python3.11+Pyside6开发电影下载程序

VideoSave是一款使用Python3.11Pyside6编写的提供下载电影/电视剧的软件&#xff0c;支持注册、登录、搜索、下载、查看日志等功能&#xff0c;提供了Window、Mac系统安装包。 先上效果图 提供功能 节省寻找资源的时间 ⌚️模糊搜索指定影片 &#x1f434;查看影片下载日志 &…