news 2026/4/23 16:01:47

选择排序详解

作者头像

张小明

前端开发工程师

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/4/23 9:45:39

英雄联盟终极智能助手:一键解放双手的完整使用手册

英雄联盟终极智能助手&#xff1a;一键解放双手的完整使用手册 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 在快节奏的现…

作者头像 李华
网站建设 2026/4/23 15:22:24

电机控制板PCB布线地平面处理:实战应用详解

电机控制板PCB地平面设计&#xff1a;从原理到实战的深度拆解在工业自动化、电动汽车和机器人系统中&#xff0c;电机控制板是真正的“肌肉中枢”。它不仅要驱动高功率负载&#xff0c;还要精确感知电流、位置与速度&#xff0c;实现毫秒级响应。然而&#xff0c;在实际开发中&…

作者头像 李华
网站建设 2026/4/22 22:49:38

专科生必看!10个降AI率工具推荐,高效避坑指南

专科生必看&#xff01;10个降AI率工具推荐&#xff0c;高效避坑指南 AI降重工具&#xff1a;让论文更自然&#xff0c;更安全 随着AI技术在学术领域的广泛应用&#xff0c;越来越多的论文开始出现“AI痕迹”过重、查重率偏高的问题。对于专科生而言&#xff0c;如何高效降低…

作者头像 李华
网站建设 2026/4/23 9:46:16

MMD Tools:Blender中强大的MMD资源导入导出插件

MMD Tools&#xff1a;Blender中强大的MMD资源导入导出插件 【免费下载链接】blender_mmd_tools MMD Tools is a blender addon for importing/exporting Models and Motions of MikuMikuDance. 项目地址: https://gitcode.com/gh_mirrors/bl/blender_mmd_tools MMD Too…

作者头像 李华
网站建设 2026/4/23 9:49:30

英雄联盟智能助手终极指南:从游戏痛点出发的完整解决方案

英雄联盟智能助手终极指南&#xff1a;从游戏痛点出发的完整解决方案 【免费下载链接】LeagueAkari ✨兴趣使然的&#xff0c;功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在为…

作者头像 李华
网站建设 2026/4/23 9:45:30

OTG主机模式启动电路设计:实战案例详解上拉电阻配置

OTG主机模式启动电路设计&#xff1a;从原理到实战的深度拆解你有没有遇到过这样的场景&#xff1f;一个工业手持终端&#xff0c;插上U盘能读数据&#xff0c;接个扫码枪又能当主机用——同一个USB口&#xff0c;既能“往外发”也能“往里收”。这背后靠的不是魔法&#xff0c…

作者头像 李华