news 2026/6/15 13:29:04

选择排序详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
选择排序详解

选择排序详解

1.核心思想

将序列分为已排序的和未排序的区间,每一轮从未排序的区间中找到最小值并与未排序区间的第一个元素交换,逐步扩大已排序的区间

步骤

  • 每一轮便利未排序的部分,找到最小值所对应的下标并作标记
  • 交换最小值和未排序部分的第一个元素
  • 重复上述步骤

2.代码实现

voidchoice(int*arr,intsz){intindex,temp;for(intk=0;k<sz-1;k++){index=k;for(inti=k+1;i<sz;i++){if(arr[i]<arr[index]){index=i;}}temp=arr[index];arr[index]=arr[k];arr[k]=temp;}}intmain(){intarr[]={2,3,4,5,6,1};intsz=sizeof(arr)/sizeof(arr[0]);choice(arr,sz);for(inti=0;i<sz;i++){printf("%-2d",arr[i]);}return0;}

3. 步骤拆解

  • 要排序的数组是{ 2,3,4,5,6,1 }
  • 通过sz = sizeof(arr) / sizeof(arr[0]);计算出要排序的元素个数,那么一共排序sz-1次即可
  • 默认未排序部分的最小值为未排序部分的首元素index = k,通过循环对比找到真正的最小值,出内层循环的时候index即为未排序部分最小值所对应的下标
  • 将未排序部分的最小值和第一个元素交换,第一轮是将1和2进行交换
  • 交换完成后k+1,重复上述步骤

特性分析

  1. 时间复杂度:最好、最坏、平均时间复杂度均为O(n^2),因为无论数组是否已有序,都需要完成n-1轮的比较。

  2. 空间复杂度:O(1),仅使用了临时变量temp等,属于原地排序。

  3. 稳定性:不稳定排序。例如数组[2, 1, 2],第一轮会将第一个2和1交换,导致两个2的相对位置改变。

  4. 适用场景:数据量较小的场景,因为交换次数少(每轮最多1次交换),比冒泡排序更高效。

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

PaddlePaddle镜像中的Optimizer选择指南:Adam还是SGD?

PaddlePaddle镜像中的Optimizer选择指南&#xff1a;Adam还是SGD&#xff1f; 在构建AI模型训练环境时&#xff0c;一个看似微小却影响深远的决策往往被忽视——优化器的选择。尤其是在使用 PaddlePaddle 镜像 快速搭建开发环境的过程中&#xff0c;面对 paddle.optimizer.SGD …

作者头像 李华
网站建设 2026/6/15 12:27:54

如何轻松管理Stardew Valley游戏资源:XNB文件处理实用指南

如何轻松管理Stardew Valley游戏资源&#xff1a;XNB文件处理实用指南 【免费下载链接】xnbcli A CLI tool for XNB packing/unpacking purpose built for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/xn/xnbcli xnbcli是一款专门为Stardew Valley游戏设…

作者头像 李华
网站建设 2026/6/15 12:27:23

哔哩下载姬完全指南:8K视频下载与去水印终极教程

哔哩下载姬完全指南&#xff1a;8K视频下载与去水印终极教程 【免费下载链接】downkyi 哔哩下载姬downkyi&#xff0c;哔哩哔哩网站视频下载工具&#xff0c;支持批量下载&#xff0c;支持8K、HDR、杜比视界&#xff0c;提供工具箱&#xff08;音视频提取、去水印等&#xff09…

作者头像 李华
网站建设 2026/6/15 12:27:56

PaddlePaddle镜像支持Few-Shot Learning吗?原型网络实现

PaddlePaddle镜像支持Few-Shot Learning吗&#xff1f;原型网络实现 在工业质检、医疗影像识别等实际场景中&#xff0c;我们常常面临一个棘手的问题&#xff1a;新类别不断涌现&#xff0c;但标注数据极其有限。比如一条新的生产线引入了从未见过的零件&#xff0c;系统需要立…

作者头像 李华
网站建设 2026/6/10 0:49:03

纪念币预约自动化工具:智能抢币新时代

还在为纪念币预约的激烈竞争而烦恼吗&#xff1f;这款基于Python开发的纪念币预约自动化工具将彻底改变你的预约体验。通过智能填表、验证码自动识别等核心技术&#xff0c;让你轻松实现纪念币预约零失败的目标。 【免费下载链接】auto_commemorative_coin_booking 项目地址…

作者头像 李华
网站建设 2026/6/15 9:54:15

Arduino与WiFi模块联动:智能家居网关实战案例

用Arduino和WiFi模块打造智能家居网关&#xff1a;从零搭建实战指南你有没有想过&#xff0c;家里那些“傻乎乎”的灯、风扇、温控器&#xff0c;其实可以变得聪明起来&#xff1f;比如温度一高自动开空调&#xff0c;离家时自动关灯&#xff0c;甚至在手机上就能查看家里的空气…

作者头像 李华