news 2026/7/30 8:01:01

选择排序--自学笔记

作者头像

张小明

前端开发工程师

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/7/30 15:07:02

为什么你的VSCode跑不了Qiskit?90%的人都忽略了这4个关键步骤

第一章&#xff1a;为什么你的VSCode跑不了Qiskit&#xff1f;当你在 VSCode 中尝试运行 Qiskit 代码却始终无法执行时&#xff0c;问题往往不在于代码本身&#xff0c;而在于开发环境的配置。Python 解释器、依赖包版本以及虚拟环境的选择都会直接影响 Qiskit 的运行效果。检查…

作者头像 李华
网站建设 2026/7/30 7:58:55

VSCode远程调试环境变量设置全攻略(从入门到精通必看)

第一章&#xff1a;VSCode远程调试环境变量概述在现代软件开发中&#xff0c;远程调试已成为不可或缺的一部分&#xff0c;尤其是在分布式系统、容器化部署和跨平台开发场景下。Visual Studio Code&#xff08;简称 VSCode&#xff09;凭借其强大的扩展生态和灵活的配置能力&am…

作者头像 李华
网站建设 2026/7/29 12:03:52

3个简单技巧彻底解决Redisson日志刷屏问题

3个简单技巧彻底解决Redisson日志刷屏问题 【免费下载链接】redisson Redisson - Easy Redis Java client with features of In-Memory Data Grid. Sync/Async/RxJava/Reactive API. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Que…

作者头像 李华
网站建设 2026/7/30 21:41:53

【RealEarthStudio】使用Celery+Redis执行异步任务

使用 Celery Redis 执行异步任务引言一、主要功能二、实现步骤2.1 安装依赖2.2 配置 Celery2.3 在 settings.py 中配置 Celery2.4 定义异步任务&#xff08;tasks.py&#xff09;2.5 在 View 中触发任务2.6 错误修正引言 计算机专业硕士在读&#xff0c;主要研究方向是特定目…

作者头像 李华
网站建设 2026/7/29 11:54:10

气动纯镍旋塞阀 dn15-600

气动纯镍旋塞阀&#xff08;DN15-600&#xff0c;国标/美标&#xff09;兼具耐腐蚀性&#xff0c;适用于常压及高压工况&#xff0c;其核心特性与应用场景如下&#xff1a;一、核心特性 耐腐蚀性 纯镍材质&#xff08;如Nickel 200、Nickel 201&#xff09;在所有浓度和温度下的…

作者头像 李华