选择排序算法
创始人
2024-11-14 12:35:28
0
for(i=0;ia[j])         {             temp = a[i];             a[i] = a[j];             a[j] = temp;         }     }  }

选择排序的步骤

  1. 第一轮
    • 遍历整个数组找到最小值,并将其与第一个元素交换。
  2. 第二轮
    • 从第二个元素开始遍历剩余的部分找到最小值,并将其与第二个元素交换。
  3. 继续进行
    • 重复上述过程,直到剩下最后一个元素不需要再进行任何比较和交换。

在最后一轮中,只剩下两个元素,倒数第二个元素与最后一个元素进行比较,确定了它们的位置。

示例

假设有一个数组 [1, 9, 0, 3, 4, 5, 6, 7]

  • 第1轮(i = 0):找到最小值 0,将其与第一个元素 1 交换,结果为 [0, 9, 1, 3, 4, 5, 6, 7]
  • 第2轮(i = 1):找到剩余部分最小值 1,将其与第二个元素 9 交换,结果为 [0, 1, 9, 3, 4, 5, 6, 7]
  • 第3轮(i = 2):找到剩余部分最小值 3,将其与第三个元素 9 交换,结果为 [0, 1, 3, 9, 4, 5, 6, 7]
  • 依此类推,直到第7轮(i = 6):找到剩余部分最小值 6,将其与倒数第二个元素 9 交换,结果为 [0, 1, 3, 4, 5, 6, 7, 9]

到此为止,数组已经有序,而最后一个元素 9 自动成为最大值。

外层循环for(i=0;i

确定当前循环的位置

循环条件是i

是因为在选择排序的每一轮中,把一个元素放在它最终的位置上。到达最后一轮时,倒数第二个位置将自动成为最大的元素,所以最后一个位置的元素已经是有序的,不再需要进行比较和交换。

i < len - 1 是为了保证每一轮排序中都能找到一个未排序部分的最小值并将其放在正确的位置,避免对最后一个元素进行多余的比较和交换。

内层循环for(j=i+1;j

进行比较和数据交换

在选择排序算法的实现中,内层循环的条件 j = i + 1; j < len; j++ 是为了找到当前未排序部分中的最小值,并将其与当前元素交换。

  1. j = i + 1:内层循环的起始索引 ji + 1 开始,这是因为在选择排序的第 i 轮中,我们假设第 i 个元素是当前未排序部分中的最小值,然后从第 i + 1 个元素开始遍历剩余未排序的元素来找到真正的最小值。如果从 i 开始,会无意义地与自身进行比较。

  2. j < len:内层循环的终止条件是 j 小于数组长度 len,即内层循环会遍历到数组的最后一个元素,确保比较到每一个未排序的元素。

通过这样的设计,选择排序确保每一轮都能找到当前未排序部分中的最小值,并将其放到正确的位置。

上一篇:创建一个简单的双链表

下一篇:安装pnpm

相关内容

热门资讯

十分钟总结!顺欣茶坊辅助器试用... 十分钟总结!顺欣茶坊辅助器试用版,蛮王辅助器(辅助)竟然是真的辅助器(哔哩哔哩)1.顺欣茶坊辅助器试...
八分钟手册!推荐一下胡乐辅助脚... 八分钟手册!推荐一下胡乐辅助脚本的教程,金虎爷有挂吗(辅助)好像是真的平台(哔哩哔哩)1、进入到推荐...
第五分钟总结!决战辅助,财神1... 第五分钟总结!决战辅助,财神13张辅助器下载(辅助)果然真的有工具(哔哩哔哩)1、在财神13张辅助器...
第八分钟绝活!多乐找刺激脚本,... 您好,新老夫子开挂系统这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很多玩...
第五分钟秘籍!广西友乐免费辅助... 第五分钟秘籍!广西友乐免费辅助使用视频,超级三加一正版(辅助)切实有挂修改器(哔哩哔哩)一、广西友乐...
7分钟操作!边锋老友辅助,新久... 7分钟操作!边锋老友辅助,新久久辅助器(辅助)切实真的有app(哔哩哔哩)1、起透看视 新久久辅助器...
第3分钟资料!潮汕掌上娱乐脚本... 第3分钟资料!潮汕掌上娱乐脚本,三哥玩辅助器(辅助)原来有挂安装(哔哩哔哩)暗藏猫腻,小编详细说明潮...
十分钟模块!中至赣牌圈黑科技,... 十分钟模块!中至赣牌圈黑科技,微信财神十三张脚本(辅助)果然是有安装(哔哩哔哩)微信财神十三张脚本透...
5分钟攻略!闲娱江西辅助器,新... 5分钟攻略!闲娱江西辅助器,新上游修改器(辅助)一直真的是有辅助(哔哩哔哩)1、用户打开应用后不用登...
三分钟绝活儿!战神辅助器下载,... 三分钟绝活儿!战神辅助器下载,悟空大厅辅助器下载(辅助)确实是真的插件(哔哩哔哩)1、全新机制【悟空...