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

面试算法:快速排序

题目

快速排序是一种非常高效的算法,从其名字可以看出这种排序算法最大的特点就是快。当表现良好时,快速排序的速度比其他主要对手(如归并排序)快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;}}}

相关文章:

面试算法:快速排序

题目 快速排序是一种非常高效的算法&#xff0c;从其名字可以看出这种排序算法最大的特点就是快。当表现良好时&#xff0c;快速排序的速度比其他主要对手&#xff08;如归并排序&#xff09;快2&#xff5e;3倍。 分析 快速排序的基本思想是分治法&#xff0c;排序过程如下…...

航空业数字化展翅高飞,开源网安专业服务保驾护航

​某知名航空公司是中国首批民营航空公司之一&#xff0c;运营国内外航线200多条&#xff0c;也是国内民航最高客座率的航空公司之一。在数字化发展中&#xff0c;该航空公司以数据驱动决策&#xff0c;通过精细化管理、数字创新和模式优化等方式&#xff0c;实现了精准营销和个…...

SpringBoot学习(三)-员工管理系统开发(重在理解)

注&#xff1a;此为笔者学习狂神说SpringBoot的笔记&#xff0c;其中包含个人的笔记和理解&#xff0c;仅做学习笔记之用&#xff0c;更多详细资讯请出门左拐B站&#xff1a;狂神说!!! 本文是基于狂神老师SpringBoot教程中的员工管理系统从0到1的实践和理解。该系统应用SpringB…...

2 Windows网络编程

1 基础概念 1.1 socket概念 Socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字”&#xff0c;它是计算机之间进行通信的一种约定或一种方式。Socket本质上是一个抽象层&#xff0c;它是一组用于网络通信的API&#xff0c;包括了一系列…...

uniapp选择android非图片文件的方案踩坑记录

这个简单的问题我遇到下面6大坑&#xff0c;原始需求是选择app如android的excel然后读取到页面并上传表格数据json 先看看效果 uniapp 选择app excel文件读取 1.uniapp自带不支持 uniapp选择图片和视频非常方便自带已经支持可以直接上传和读取 但是选择word excel的时候就出现…...

前端发开的性能优化 请求级:请求前(资源预加载和预读取)

预加载 预加载&#xff1a;是优化网页性能的重要技术&#xff0c;其目的就是在页面加载过程中先提前请求和获取相关的资源信息&#xff0c;减少用户的等待时间&#xff0c;提高用户的体验性。预加载的操作可以尝试去解决一些类似于减少首次内容渲染的时间&#xff0c;提升关键资…...

B01、类加载子系统-02

JVM架构图-英文版 中文版见下图&#xff1a; 1、概述类的加载器及类加载过程 1.1、类加载子系统的作用 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engi…...

用PHP搭建一个绘画API

【腾讯云AI绘画】用PHP搭建一个绘画API 大家好&#xff01;今天我要给大家推荐的是如何用PHP搭建一个绘画API&#xff0c;让你的网站或应用瞬间拥有强大的绘画能力&#xff01;无论你是想要让用户在网页上绘制自己的创意&#xff0c;还是想要实现自动绘画生成特效&#xff0c;这…...

西安人民检察院 | OLED翻页查询一体机

产品&#xff1a;55寸OLED柔性屏 项目时间&#xff1a;2023年12月 项目地点&#xff1a;西安 在2023年12月&#xff0c;西安人民检察院引入了OLED翻页查询一体机&#xff0c;为来访者提供了一种全新的信息查询方式。 这款一体机采用55寸OLED柔性屏&#xff0c;具有高清晰度、…...

superset利用mysql物化视图解决不同数据授权需要写好几次中文别名的问题

背景 在使用superset时&#xff0c;给不同的人授权不同的数据&#xff0c;需要不同的数据源&#xff0c;可视化字段希望是中文&#xff0c;所以导致不同的人需要都需要去改表的字段&#xff0c;因此引入视图&#xff0c;将视图中字段名称设置为中文 原表数据 select * from …...

输入输出流

1.输入输出流 输入/输出流类&#xff1a;iostream---------i input&#xff08;输入&#xff09; o output&#xff08;输出&#xff09; stream&#xff1a;流 iostream&#xff1a; istream类&#xff1a;输入流类-------------cin&#xff1a;输入流类的对象 ostream类…...

IOS:Safari无法播放MP4(H.264编码)

一、问题描述 MP4使用H.264编码通常具有良好的兼容性&#xff0c;因为H.264是一种广泛支持的视频编码标准。它可以在许多设备和平台上播放&#xff0c;包括电脑、移动设备和流媒体设备。 使用caniuse查询H.264兼容性&#xff0c;看似确实具有良好的兼容性&#xff1a; 然而…...

Pycharm恢复默认设置

window 系统 找到下方目录-->删除. 再重新打开Pycharm C:\Users\Administrator\.PyCharm2023.3 你的不一定和我名称一样 只要是.PyCharm*因为版本不同后缀可能不一样 mac 系统 请根据需要删除下方目录 # Configuration rm -rf ~/Library/Preferences/PyCharm* # Caches …...

简单计算器实现,包括两个数

正在加载中... 简单计算器实现&#xff0c;包括两个数 ❤ 厾罗 简单计算器实现&#xff0c;包括两个数 以下代码用于实现简单计算器实现&#xff0c;包括两个数基本的加减乘除运算&#xff1a; 实例(Python 3.0) # Filename : test.py # author by : www.dida100.com …...

竞赛保研 基于机器视觉的手势检测和识别算法

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的手势检测与识别算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng…...

Android App从备案到上架全过程

不知道大家注意没有,最近几年来,新的移动App想要上架是会非常困难的,并且对于个人开发者和小企业几乎是难如登天,各种备案和审核。但是到底有多难,或许只有上架过的才会有所体会。 首先是目前各大应用市场陆续推出新的声明,各种备案截止日期到12月就要到最后期限责令整改…...

用邮件及时获取变更的公网IP--------python爬虫+打包成exe文件

参考获取PC机公网IP并发送至邮箱 零、找一个发送邮件的邮箱 本文用QQ邮箱为发送邮箱&#xff0c;网易等邮箱一般也有这个功能&#xff0c;代码也是通用的。 第一步&#xff1a;在设置中找到账户&#xff0c;找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务&#xff0c;点击获…...

c++学习:函数模板+实战

目录 函数模板 思考 如果两个参数的类型不一样可以下面这么写 如果有指定返回参数可以下面这么写 实战 找出三个数中最大的一个 函数模板 实际上就是建立一个通用函数&#xff0c;其函数返回值类型和形参类型不具体指定&#xff0c;用一个虚拟的类型来代表template 是一个…...

three.js gltf后处理颜色异常(伽马校正)

效果&#xff1a; 应用了伽马校正&#xff0c;好像效果不明显 代码&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"><…...

面试经典150题(55-58)

leetcode 150道题 计划花两个月时候刷完&#xff0c;今天&#xff08;第二十四天&#xff09;完成了4道(55-58)150&#xff1a; 55.&#xff08;19. 删除链表的倒数第 N 个结点&#xff09;题目描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff…...

用emWin定时器在STM32上做个简易秒表:从对话框UI到后台逻辑的完整实现

用emWin定时器在STM32上实现高精度秒表&#xff1a;从UI设计到多任务协同的工程实践 在嵌入式GUI开发中&#xff0c;精确的时间控制往往决定着用户体验的成败。当我们需要在STM32平台上实现一个毫秒级响应的秒表应用时&#xff0c;emWin的窗口管理器定时器(WM_TIMER)便成为连接…...

从Hello-World到Nginx:5个真实案例详解如何让Docker容器在后台稳定运行

从Hello-World到Nginx&#xff1a;5个真实案例详解如何让Docker容器在后台稳定运行 当你在终端输入docker run后&#xff0c;容器却像一阵风一样消失无踪——这种"闪退"现象往往是Docker新手遭遇的第一个认知颠覆点。不同于传统虚拟机&#xff0c;容器本质上是隔离的…...

3分钟掌握罗技鼠标宏:PUBG自动压枪脚本终极指南

3分钟掌握罗技鼠标宏&#xff1a;PUBG自动压枪脚本终极指南 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 还在为《绝地求生》中难以控制的枪械…...

手把手教你:在RT-Thread上用STM32驱动0.96寸OLED显示动态二维码(附完整源码)

基于RT-Thread的STM32动态二维码显示系统开发实战 在智能门锁、工业设备配网等物联网场景中&#xff0c;二维码作为信息载体正发挥着越来越重要的作用。本文将完整呈现如何在RT-Thread操作系统上&#xff0c;通过STM32驱动0.96寸OLED实现动态二维码显示功能。不同于简单的功能演…...

告别乱码!手把手教你用Processing为Arduino TFT_eSPI屏幕制作专属中文字库(附完整源码)

告别乱码&#xff01;手把手教你用Processing为Arduino TFT_eSPI屏幕制作专属中文字库&#xff08;附完整源码&#xff09; 在嵌入式开发中&#xff0c;TFT屏幕的中文显示一直是创客们头疼的问题。传统的解决方案要么占用大量存储空间&#xff0c;要么显示效果不尽如人意。本文…...

别再手动建模了!用SolidWorks插件5分钟把三维模型导入Simscape(附R2017a版保姆级教程)

从SolidWorks到Simscape&#xff1a;三维模型高效仿真全流程指南 在工程设计与仿真领域&#xff0c;时间就是竞争力。传统的手动建模方式不仅耗时费力&#xff0c;还容易引入人为误差。想象一下&#xff0c;当你花费数小时在Simscape中重建一个复杂的SolidWorks装配体时&#x…...

【Mem0】 源码剖析(一):Agent 的记忆危机与 Mem0 的三阶段管道——为什么 RAG 不够用?

【Mem0】 源码剖析&#xff08;一&#xff09;&#xff1a;Agent 的记忆危机与 Mem0 的三阶段管道——为什么 RAG 不够用&#xff1f; 写在前面&#xff1a;54K Star&#xff0c;论文被 arXiv 收录&#xff0c;LOCOMO 基准 SOTA——Mem0 是当前 Agent 记忆层的事实标准。它的核…...

分类记单词:哺乳动物

分类记单词&#xff1a;哺乳动物快来记单词&#xff0c;这里有好多哺乳动物哦一、宠物、家畜 pet 宠物cat 猫tom 公猫&#xff1b;汤姆dog 狗pup 小狗bitch 母狗&#xff1b;泼妇pig 猪sow 母猪&#xff1b;播种boar 未阉的公猪&#xff1b;野猪piglet 小猪livestock 牲口cattl…...

Java 100 天进阶之路 | 从入门到上岗就业 · 完整目录导航

&#x1f4da; Java 100 天进阶之路 | 从入门到上岗就业 完整目录导航 不背八股文&#xff0c;不堆概念。44篇基础56篇进阶&#xff0c;100天助你达到Java就业水平&#xff0c;从容面对技术面试。 零差评Java教程&#xff0c;从入门到微服务&#xff0c;每篇都有代码、避坑和面…...

从CuteCom到minicom:手把手教你搭建Ubuntu嵌入式开发串口调试环境(附I.MX6ULL实战)

从CuteCom到minicom&#xff1a;Ubuntu嵌入式开发串口调试全攻略 嵌入式开发中&#xff0c;串口调试如同工程师的"听诊器"。当你在Ubuntu系统上面对I.MX6ULL这类开发板时&#xff0c;选择一款趁手的串口工具&#xff0c;往往能事半功倍。本文将带你深度对比CuteCom和…...