面试算法:快速排序

题目

快速排序是一种非常高效的算法,从其名字可以看出这种排序算法最大的特点就是快。当表现良好时,快速排序的速度比其他主要对手(如归并排序)快2~3倍。

分析

快速排序的基本思想是分治法,排序过程如下:在输入数组中随机选取一个元素作为中间值(pivot),然后对数组进行分区(partition),使所有比中间值小的数据移到数组的左边,所有比中间值大的数据移到数组的右边。接下来对中间值左右两侧的子数组用相同的步骤排序,直到子数组中只有一个数字为止。

题目

public class Test {public static void main(String[] args) {int[] nums = {4, 1, 5, 3, 6, 2, 7, 8};int[] result = sortArray(nums);for (int item : result) {System.out.println(item);}}public static int[] sortArray(int[] nums) {quicksort(nums, 0, nums.length - 1);return nums;}public static void quicksort(int[] nums, int start, int end) {if (start < end) {int pivot = partition(nums, start, end);quicksort(nums, start, pivot - 1);quicksort(nums, pivot + 1, end);}}public static int partition(int[] nums, int start, int end) {int random = new Random().nextInt(end - start + 1) + start;swap(nums, random, end);int small = start - 1;// 把所有遇到的小元素全部放到头部for (int i = start; i < end; i++) {if (nums[i] < nums[end]) {small++;swap(nums, small, i);}}small++;swap(nums, small, end);return small;}private static void swap(int[] nums, int index1, int index2) {if (index1 != index2) {int temp = nums[index1];nums[index1] = nums[index2];nums[index2] = temp;}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python期末复习资料

一、基础知识点 1. Python基础语法 变量与数据类型 定义变量&#xff0c;理解变量的命名规则基本数据类型&#xff1a;整数、浮点数、字符串列表、元组、字典、集合等复合数据类型 1. 1 变量 1.1.1 变量的定义 在Python中&#xff0c;变量是用来存储数据值的标识符。你可…

.Net8 新特性之键控服务-依赖注入一对多模式

在.NET8 中引入了KeyedService支持&#xff0c;这使得可以支持一对多的依赖注入了。在官方&#xff0c;这个功能叫键化DI服务。 什么是键化DI服务&#xff1f;官方解释是这样的&#xff0c;键化依赖项注入&#xff08;DI&#xff09;服务提供了一种适用键来注册和检索DI服务的…

【随口一说】最近的CSDN

这段时间随便发的一篇博文很快就有“点赞”、“收藏”、“关注”的信息&#xff0c; 而且简单看了一眼用户&#xff0c;很多都是空的或者一堆转载&#xff0c; 机器人也太明显了点&#xff0c;很让人不舒服&#xff0c; 不花点心思设计文章评优推送算法反倒用机器人刷热门&…

问题描述:智能驾驶中的FSD是什么意思。

问题描述&#xff1a;智能驾驶中的FSD是什么意思。 问题描述&#xff1a; FSD 在智能驾驶领域通常指的是 "Full Self-Driving"&#xff0c;即全自动驾驶。这表示汽车具备了足够的智能和技术&#xff0c;能够在不需要人类干预的情况下完成所有驾驶任务。全自动驾驶系…

硬件知识之ESD保护器件

ESD保护器件&#xff0c;全称是Electrostatic Discharge Protection Device&#xff0c;是一种专门用与防止电子设备遭受外部静电放电而损坏的元器件。静电放电会在接口或器件表面积累成千上万伏特的能量&#xff0c;这些能量可能会引起设备故障或者持久性损伤&#xff0c;甚至…

185.【2023年华为OD机试真题(C卷)】报文重排序(顺序索引实现JavaPythonC++JS)

请到本专栏顶置查阅最新的华为OD机试宝典 点击跳转到本专栏-算法之翼:华为OD机试 🚀你的旅程将在这里启航!本专栏所有题目均包含优质解题思路,高质量解题代码,详细代码讲解,助你深入学习,深度掌握! 文章目录 【2023年华为OD机试真题(C卷)】报文重排序(顺序索引…

电机(一):直流有刷电机和舵机

声明&#xff1a;以下图片来自于正点原子&#xff0c;仅做学习笔记使用 电机专题&#xff1a; 直流电机&#xff1a;直流有刷BDC&#xff08;内含电刷&#xff09;&#xff0c;直流无刷BLDC&#xff08;大疆的M3508和M2006&#xff09;,无刷电机有以下三种形式&#xff1a;&a…

C语言之分支与循环【附6个练习】

文章目录 前言一、什么是语句&#xff1f;1.1 表达式语句1.2 函数调用语句1.3 控制语句1.4 复合语句1.5 空语句 二、分支语句&#xff08;选择结构&#xff09;2.1 if语句2.1.1 悬空else2.1.2 练习&#xff08;1. 判断一个数是否为奇数 2. 输出1-100之间的奇数&#xff09; 2.2…

deepfacelive实时换脸教程(2024最新版)

deepfacelive其实操作用法很简单&#xff0c;难的是模型的制作。本帖主要讲deepfacelive&#xff08;下文简称dflive&#xff09;软件本身的操作&#xff0c;以及模型怎么从dfl转格式过来&#xff0c;至于模型如何训练才能效果好&#xff0c;请移步教程区&#xff0c;看deepfac…

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中&#xff0c;如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢&#xff1f; IE&#xff08;interrupt enable&#xff09;寄存器中&#xff0c;都是中断的使能位置。 其中的EA&#xff08;enable all&#xff09;是总使能位&#xff0c;ES(enable serial)是串口…

构建安全的SSH服务体系

某公司的电子商务站点由专门的网站管理员进行配置和维护&#xff0c;并需要随时从Internet进行远程管理&#xff0c;考虑到易用性和灵活性&#xff0c;在Web服务器上启用OpenSSH服务&#xff0c;同时基于安全性考虑&#xff0c;需要对 SSH登录进行严格的控制&#xff0c;如图10…

WorkQueue模型

WorkQueues&#xff0c;也被称为任务队列模型。当消息处理比较耗时的时候&#xff0c;可能生产消息的速度会远远大于消息的消费速度。长此以往&#xff0c;消息就会堆积越来越多&#xff0c;无法及时的处理。此时就可以使用work模型&#xff1a;让多个消费者绑定到一个队列&…

问题描述:与编码器对应的解码器是什么,说明一下解码器的名字由来,结构,原理,特点,用处。

问题描述&#xff1a;与编码器对应的解码器是什么&#xff0c;说明一下解码器的名字由来&#xff0c;结构&#xff0c;原理&#xff0c;特点&#xff0c;用处。 问题解答&#xff1a; 定义&#xff1a;解码器是一种电子设备或程序&#xff0c;用于将经过编码的数据转换回原始…

概率论基础

1.概率论 1.1 随机事件与概率 1.1.1 基本概念 ​ 样本点(sample point)&#xff1a; 称为试验 S S S的可能结果为样本点&#xff0c;用 ω \omega ω表示。 ​ 样本空间(sample space)&#xff1a;称试验 S S S的样本点构成的集合为样本空间&#xff0c;用 Ω \Omega Ω表示…

R语言【CoordinateCleaner】——cc_gbif(): 根据通过 method 参数定义的方法,删除或标记地理空间中异常值的记录。

cc_gbif()是R语言包coordinatecleaner中的一个函数&#xff0c;用于清理GBIF&#xff08;全球生物多样性信息设施&#xff09;数据集的地理坐标。该函数可以识别潜在的坐标错误&#xff0c;并对其进行修正或删除。 以下是cc_gbifl()函数的一般用法和主要参数&#xff1a; cc_…

把form表单数据转为json,并传给父页面

阻止form表单提交&#xff0c;表单数据转为json字符串&#xff0c;并传给父页面 // 获取表单元素var form document.getElementById(myForm);// 监听表单提交事件form.addEventListener(submit, function(event) {// 在这里处理表单提交的逻辑var rental_id $("#c-id&q…

gem5学习(8):创建一个简单的缓存对象--Creating a simple cache object

目录 一、SimpleCache SimObject 二、Implementing the SimpleCache 1、getSlavePort() 2、handleRequest() 3、AccessEvent() 4、accessTiming() &#xff08;1&#xff09;缓存命中&#xff1a;sendResponse() &#xff08;2&#xff09;缓存未命中&#xff1a; 三、…

实现3x3卷积的手写FIFO

例子来自米联科例程&#xff0c; 因为不同平台之间调IP会变麻烦&#xff0c;重新阅读手册太花时间了&#xff08;虽然我觉得fifo这种常用IP尽量掌握为好&#xff09;&#xff0c;使用手写的FIFO可以节约开发的流程。 通过这个例子也可以优化自己所使用的手写FIFO。 // by C…

matlab概率论例子

高斯概率模型&#xff1a; [f,xi] ksdensity(x): returns a probability density estimate, f, for the sample in the vector x. The estimate is based on a normal kernel function, and is evaluated at 100 equally spaced points, xi, that cover the range of the da…

Mybatis行为配置之Ⅰ—缓存

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…