交换排序:冒泡排序和快速排序

冒泡排序

思路

通过多次遍历数组,比较相邻的元素,并交换它们,使得每次遍历结束后,最大(或最小)的元素都“冒泡”到数组的末尾

实现

public class  Main {public static void main(String[] args) {int[] arr = {1, 7, 8, 4, 5, 3};f(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}static void f(int arr[]) {for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
}          

快速排序

思路

(1)设定一个分界值【如最大索引位置的值】,通过该分界值将数组分成左右两部分:小于分界值的全部在其左边,大于或等于分界值的全部在其右边

(2)对(1)中分界分界值左右两部分都看做一个整体,按照(1)中思路再次分配

(3)重复(2)

实现

public class Main {public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};quickSort(arr, 0, arr.length - 1);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}public static void quickSort(int[] arr, int left, int right) {if (left < right) {// 寻找分界值int pi = partition(arr, left, right);// 递归对分割点左边的子数组进行排序quickSort(arr, left, pi - 1);// 递归对分割点右边的子数组进行排序quickSort(arr, pi + 1, right);}}public static int partition(int[] arr, int left, int right) {int pivot = arr[right]; // 选择最后一个元素作为分界值int i = left - 1; // 初始化分界值的位置for (int j = left; j < right; 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[right];arr[right] = temp;return i + 1;}
}

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

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

相关文章

ns3.36以后的版本中_ns3命令的原理_CMAKE的使用以及一些例子

本文主要来自于ns3的官方文档&#xff1a;4.3. Working with CMake — Manual&#xff0c;不过只包含以下部分&#xff1a; 4.3. 使用CMake 4.3.1. 配置项目 4.3.1.1. 使用ns3配置项目 4.3.1.2. 使用CMake配置项目 4.3.2. 手动刷新CMake缓存 4.3.3. 建设项目 4.3.3.1. 使用ns3…

生活中的洪特规则

不知道你还记不记得高中物理所学的一个奇特的物理规则&#xff1a;洪特规则。 洪特规则是德国人弗里德里希洪特&#xff08;F.Hund&#xff09;根据大量光谱实验数据总结出的一个规律&#xff0c;它指出电子分布到能量简并的原子轨道时&#xff0c;优先以自旋相同的方式分别占…

企业网站制作如何被百度收录

1、网站在百度中的整体评分 说俗点就是网站的权重&#xff0c;在优化过程中我们会见到很多网站出现秒收的情况&#xff0c;发布的文章几分钟就可以收录&#xff0c;这个通过SITE语法都可以去查询&#xff0c;那么这跟自己的网站权重以及内容更新习惯是有非常重要的关联。 我们…

【函数式接口使用✈️✈️】通过具体的例子实现函数结合策略模式的使用

目录 前言 一、核心函数式接口 1. Consumer 2. Supplier 3. Function,> 二、场景模拟 1.面向对象设计 2. 策略接口实现&#xff08;以 Function 接口作为策略&#xff09; 三、对比 前言 在 Java 8 中引入了Stream API 新特性&#xff0c;这使得函数式编程风格进…

nginx 导致websocket无法连接的解决办法

答&#xff1a;在config配置文件中 map $http_upgrade $connection_upgrade { default upgrade; close; } server { listen 443 ssl; server_name your_domain.com; ssl_certificate /path/to/ssl_certificate.crt; ssl_certificate_key /path/to/…

【IoTDB 线上小课 02】开源增益的大厂研发岗面经

还有友友不知道我们的【IoTDB 视频小课】系列吗&#xff1f; 关于 IoTDB&#xff0c;关于物联网&#xff0c;关于时序数据库&#xff0c;关于开源...给我们 5 分钟&#xff0c;持续学习&#xff0c;干货满满~ 5分钟学会 大厂研发岗面试 之前的第一期小课&#xff0c;我们听了 I…

设计模式|迭代器模式(Iterator)

文章目录 结构优缺点优点缺点使用了迭代器模式的知名框架代码示例在实现迭代器时,需要有什么考虑迭代器模式(Iterator)是一种行为设计模式,它允许在不暴露集合底层表示的情况下,顺序访问一个集合中的元素。这种模式在需要逐个处理集合中的元素,而又不希望暴露其内部结构的…

1.总结串口的发送和接收功能使用到的函数2.总结DMA的作用,和DMA+空闲中断的使用方式3.使用PWM+ADC光敏电阻完成光控灯的实验

1.总结串口的发送和接收功能使用到的函数 串口发送函数&#xff1a;HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) UART_HandleTypeDef *huart&#xff1a;指定要使用的串口 const uint8_t *pData&…

爬虫入门——Request请求

目录 前言 一、Requests是什么&#xff1f; 二、使用步骤 1.引入库 2.请求 3.响应 三.总结 前言 上一篇爬虫我们已经提及到了urllib库的使用&#xff0c;为了方便大家的使用过程&#xff0c;这里为大家介绍新的库来实现请求获取响应的库。 一、Requests是什么&#xff1…

如何确保美国站群服务器的安全性?

选择服务器安全性很重要&#xff0c;那么如何确保美国站群服务器的安全性&#xff0c;rak部落小编为您整理发布如何确保美国站群服务器的安全性。 确保美国站群服务器的安全性&#xff0c;您可以采取以下措施&#xff1a; - **定期更新和升级**&#xff1a;保持服务器操作系统和…

MT2045 斐波那契,但是是字符串

现在有字符串组&#xff1a; 第0项a0​“IAKIOI”&#xff1b; 第1项a1​“WHENWILLSCORLLOFTAIWUCOMEOUT!!!”&#xff1b; 之后的第k项由第k−2项第k−1项构成。 问第n项字符串的第c个字符是什么。 格式 输入格式&#xff1a; 两个整数n,c意义如题 输出格式&#xff1a; …

基于Python大数据的微博舆情分析,微博评论情感分析可视化系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

PCB Editor简单使用

先在OrCAD软件 导出画好的图&#xff1a; 去PCBEditor软件&#xff1a; 画版图框框&#xff1a; 可以手动画也可以代码画&#xff0c;前提是使用line的操作。 命令画 x 0 0 x 1000 0 x 1000 1000 X 0 1000 X 0 0 就可以了 显示格点 修改格点&#xff1a; 导入…

transformer上手(9)—— 翻译任务

运用 Transformers 库来完成翻译任务。翻译是典型的序列到序列 (sequence-to-sequence, Seq2Seq) 任务&#xff0c;即对于每一个输入序列都会输出一个对应的序列。翻译在任务形式上与许多其他任务很接近&#xff0c;例如&#xff1a; 文本摘要 (Summarization)&#xff1a;将长…

短视频素材在哪里找?8个视频素材免费网站大全

在当下这个视频内容越发重要的时代&#xff0c;获取多样化且高质量的视频素材对于提升任何视频项目的吸引力至关重要。为了帮助你探索更广阔的创意领域&#xff0c;这里有一系列精选的无水印视频素材网站&#xff0c;它们各具特色&#xff0c;能够为你的创作带来新的视觉体验和…

一文掌握面阵相机

机器视觉应用中常见的面阵工业相机&#xff0c;其应用比较广泛&#xff0c;它主要是采用连续的、面状扫描光线来获取完成的目标图像&#xff0c;并能即使进行图像采集的相机&#xff0c;最终实现产品的检测。 面阵相机分类: 按照芯片类型&#xff1a;CCD相机和CMOS相机。 按…

C++ 并发编程指南(11)原子操作 | 11.5、内存模型

文章目录 一、C 内存模型1、为什么需要内存模型&#xff1f; 前言 C 11标准中最重要的特性之一&#xff0c;是大多数程序员都不会关注的东西。它并不是新的语法特性&#xff0c;也不是新的类库功能&#xff0c;而是新的多线程感知内存模型。本文介绍的内存模型是指多线程编程方…

专精特新专项指标

专项指标&#xff08;至少具备一条&#xff09; 1.化&#xff1a;企业坚持化发展战略&#xff0c;从事特定细分市场时间达到2年以上&#xff0c;专注核心业务&#xff0c;主营业务收入占本企业营业收入的70%以上&#xff0c;具有较高化生产、服务和协作配套能力&#xff0c;能…

如何给自己的网站做HTTPS证书

如何给自己的网站做HTTPS证书 原文地址&#xff1a;https://letscrypt.org/ 1. 通过 SSH 连接到服务器 以具有 sudo 权限的用户身份通过​​ SSH 连接到运行 HTTP 网站的服务器。 2.安装snapd 您需要安装 snapd 并确保按照说明进行操作以启用经典快照支持。 按照 snapcraft…

TLS v1.3 导致JetBrains IDE jdk.internal.net.http.common CPU占用高

开发环境 GoLand版本&#xff1a;2022.3.4 问题原因 JDK 中的 TLS v1.3 实现引起 解决办法 使用 SOCKS 代理代替HTTP代理 禁用 Space 和 Code With Me 插件 禁用 TLS v1.3&#xff0c;参考&#xff1a;https://stackoverflow.com/questions/54485755/java-11-httpclient-…