news 2026/4/23 20:58:19

每天学习一个小算法: 选择排序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
每天学习一个小算法: 选择排序

选择排序

  • 算法原理
  • 一、适用场景
  • 二、复杂度分析
    • 1.时间复杂度
    • 2.空间复杂度
  • 三、代码实现
    • 1、Python实现
    • 2、Java实现
    • 3、C语言实现
  • 总结

算法原理

  1. 把数组划分为 有序区间(左侧) + 无序区间(右侧)。
  2. 每一轮遍历无序区间,找到其中最小值(或最大值)的下标。
  3. 将找到的最值元素,与无序区间第一个元素交换。
  4. 有序区间向右扩大一格,重复上述步骤,直到整个数组有序。

核心思想:不断选最值,放到最前面。


一、适用场景

小规模数据排序(数据量很小,简单够用);
交换代价远大于比较代价 的场景(如硬件底层、老旧设备);
算法入门教学、笔试手写最简排序;
内存极度受限、不能开辟额外空间的极简环境;
对排序稳定性无要求、追求代码极简的临时排序。

二、复杂度分析

1.时间复杂度

  • 最好 / 平均 / 最坏:O(n²)
  • 无论数组是否接近有序,都要完整扫描无序区间,无优化,这是和插入排序最大区别。

2.空间复杂度

属于原地排序,仅用常数级临时变量

  • O(1)

三、代码实现

1、Python实现

defselection_sort(arr):n=len(arr)foriinrange(n):min_idx=iforjinrange(i+1,n):ifarr[j]<arr[min_idx]:min_idx=j arr[i],arr[min_idx]=arr[min_idx],arr[i]returnarr

2、Java实现

publicvoidselectionSort(int[]arr){intn=arr.length;for(inti=0;i<n;i++){intminIdx=i;for(intj=i+1;j<n;j++){if(arr[j]<arr[minIdx])minIdx=j;}intt=arr[i];arr[i]=arr[minIdx];arr[minIdx]=t;}}

3、C语言实现

voidselectionSort(intarr[],intn){intminIdx;for(inti=0;i<n-1;i++){minIdx=i;for(intj=i+1;j<n;j++)if(arr[j]<arr[minIdx])minIdx=j;swap(&arr[i],&arr[minIdx]);}}

总结

记录自己的快乐学习日志,也祝贺观看到这的小伙伴早日学有所成,财富自由💰💰。
记得点赞👍、收藏👋呀!!!

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

支付宝小程序chooseImage拍摄高清原图

问题描述&#xff1a; 我有个需求&#xff0c;需要拍摄高清图片&#xff0c;使用chooseImage API拍摄图片后发现与原机拍摄出入比较大&#xff0c;不够高清&#xff0c;拍出来的照片大小最多就1MB左右&#xff0c;我原机拍摄能到4MB左右。设置了sizeType: [“original”],highQ…

作者头像 李华
网站建设 2026/4/23 20:56:36

告别繁琐部署:用PyInstaller定制LabelImg可执行文件,实现团队高效标注

1. 为什么需要定制LabelImg可执行文件 在计算机视觉项目中&#xff0c;图片标注是训练模型前最耗时的环节之一。我参与过多个团队协作的标注项目&#xff0c;发现最大的痛点不是标注本身&#xff0c;而是工具部署带来的效率损耗。想象一下&#xff1a;10个人的标注团队&#xf…

作者头像 李华
网站建设 2026/4/23 20:54:17

京东抢购助手:3分钟搞定自动抢购的终极解决方案

京东抢购助手&#xff1a;3分钟搞定自动抢购的终极解决方案 【免费下载链接】jd-assistant 京东抢购助手&#xff1a;包含登录&#xff0c;查询商品库存/价格&#xff0c;添加/清空购物车&#xff0c;抢购商品(下单)&#xff0c;查询订单等功能 项目地址: https://gitcode.co…

作者头像 李华
网站建设 2026/4/23 20:51:19

如何集成Hermes Agent/OpenClaw?2026年阿里云及Coding Plan配置保姆级攻略

如何集成Hermes Agent/OpenClaw&#xff1f;2026年阿里云及Coding Plan配置保姆级攻略。OpenClaw&#xff08;前身为Clawdbot/Moltbot&#xff09;作为开源、本地优先的AI助理框架&#xff0c;凭借724小时在线响应、多任务自动化执行、跨平台协同等核心能力&#xff0c;成为个人…

作者头像 李华