news 2026/4/3 2:39:48

选择排序--自学笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
选择排序--自学笔记

选择排序

学习目标:

1.选择排序的基本思想

2.二元选择排序

3.冒泡排序和选择排序的异同

4.复杂度分析

1.选择排序的基本思想

1.1基本思想

双重循环遍历数组,每经过一轮比较,找到最小或最大元素的下标,将其换至首位!

经过六轮选择,完成排序

1.2代码实现

publicstaticvoidselectSort(int[]arr){intminIndex;intlen=arr.length;for(inti=0;i<len-1;i++){minIndex=i;for(intj=i+1;j<len;j++){if(arr[j]<arr[minIndex]){minIndex=j;}}swap(arr,i,minIndex);}}

2.二元选择排序

2.1 二元选择排序的思想

既然一次选择中要找出最小值,何不把最大值也找出来

2.2 代码实现

publicstaticvoidselectSort(int[]arr){intminIndex,maxIndex;intlen=arr.length;for(inti=0;i<len-1;i++){minIndex=i;maxIndex=i;//每轮最末尾 i 位 已有序for(intj=i+1;j<len-i;j++){if(arr[j]<arr[minIndex]){minIndex=j;}if(arr[j]>arr[maxIndex]){maxIndex=j;}}//min == max 说明所有元素相等 提前退出if(minIndex==maxIndex)break;swap(arr,i,minIndex);//当前数组的末尾下标 len - 1 - i//特殊情况:此时maxIndex == i//而 i 刚刚与 minIndex 互换//更新为 maxIndex = minIndexif(maxIndex==i)maxIndex=minIndex;swap(arr,len-1-i,maxIndex);}}

3.冒泡排序和选择排序的异同

3.1 相同点

1.都是两层循环,时间复杂度为O(n2)

2.都只使用有限个变量,空间复杂度为O(1)

3.2 不同点

1.冒泡排序在比较过程中不断交换

2.选择排序增加一个变量保存最小值/最大值的下标,遍历完成后才交换,

减少了交换的次数

*3.冒泡排序是稳定的,而选择排序是不稳定的

3.3 排序算法的稳定性

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,

若经过排序,这些记录的相对次序保持不变,即

在原序列中,r[i] = r[j] ,且r[i] 在 r[j] 之前,而在排序后的序列中,

r[i] 仍在 r[j] 之前,相对顺序依然不变,

则称这种排序算法是稳定的;

否则称为不稳定的

3.4 什么情况下要用的排序算法的稳定性?

将要排序的内容是一个对象的多个属性,

且其原本的顺序存在意义,

如果要在二次排序后保持原有排序的意义,

则需要用到稳定性

4.复杂度分析

1.时间复杂度:O(n2)

2.空间复杂度:O(1)

215. 数组中的第K个最大元素 - 力扣(LeetCode)

2.空间复杂度:O(1)

215. 数组中的第K个最大元素 - 力扣(LeetCode)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 5:52:23

CANoe驱动下的汽车服务导向网络原型设计与应用

摘要未来&#xff0c;车辆制造商希望在网络通信领域提供更高的灵活性&#xff0c;例如在开发过程中以及生产后提供简化的更新和升级功能。为实现这一目标&#xff0c;当前车辆内部架构领域正经历一场范式转变 —— 多年来&#xff0c;车辆内部架构一直基于面向信号的通信设计。…

作者头像 李华
网站建设 2026/3/26 16:43:54

【JMeter】常用线程组设置策略

一、前言 ​ 在JMeter压力测试中&#xff0c;我们时常见到的几个场景有&#xff1a;单场景基准测试、单场景并发测试、单场景容量测试、混合场景容量测试、混合场景并发测试以及混合场景稳定性测试 在本篇文章中&#xff0c;我们会用到一些插件&#xff0c;在这边先给大家列出…

作者头像 李华
网站建设 2026/4/2 8:38:39

清朝条约史料三册合辑:从尼布楚到辛丑条约的完整 PDF 文献汇编

对于清代史研究者与历史爱好者而言&#xff0c;系统梳理清代对外条约的演变轨迹&#xff0c;是理解近代中国历史进程的重要途径。《清代条约史料三册合辑&#xff1a;从尼布楚到辛丑条约的完整 PDF 文献汇编》&#xff0c;便以时间为脉络&#xff0c;完整收录了 1689 年《尼布楚…

作者头像 李华
网站建设 2026/3/30 16:04:10

5大ControlNet高级技巧:从基础应用到企业级工作流优化

5大ControlNet高级技巧&#xff1a;从基础应用到企业级工作流优化 【免费下载链接】sd-webui-controlnet WebUI extension for ControlNet 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-controlnet 掌握ControlNet基础功能只是第一步&#xff0c;真正的高效工…

作者头像 李华
网站建设 2026/4/2 18:29:39

Canal-deployer1.1.8监听mysql数据变化(windows)

参考&#xff1a;https://blog.csdn.net/zhouzhiwengang/article/details/128900318https://www.cnblogs.com/xfeiyun/p/17468158.htmlMysql 查看是否开启binlogshow VARIABLES like log_bin;如果值为“OFF”&#xff0c;则需修改为“ON”&#xff0c;方法&#xff1a;1、修改配…

作者头像 李华
网站建设 2026/4/3 6:14:00

Qwen-Edit视角控制:用AI语言重塑图像观察角度

&#x1f3ac; 你是否曾经遇到过这样的困扰&#xff1f; 【免费下载链接】Qwen-Edit-2509-Multiple-angles 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Qwen-Edit-2509-Multiple-angles 拍了一张产品照片&#xff0c;却发现角度不够理想想要展示商品的多面性…

作者头像 李华