文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python排序算法之选择排序怎么实现

2023-05-17 21:19

关注

一、前言

初级排序算法是指几种较为基础且容易理解的排序算法。初级排序算法包括插入排序、选择排序和冒泡排序3种。虽然它们的效率相对于高级排序算法偏低,但是在了解初级排序算法之后,再去学习相对复杂的高级排序算法会容易许多。

二、描述

选择排序表示从无序的数组中,每次选择最小或最大的数据,从无序数组中放到有序数组的末尾,以达到排序的效果。

选择排序的平均时间复杂度是O(n2),最好情况下的时间复杂度和最坏情况下的时间复杂度都是O( n2 )。另外,它是一个不稳定的排序算法。选择排序的过程很容易理解。以递增排序的算法为例,我们先遍历未排序的数组,在其中找到最小的元素,如图2-4所示。然后,将未排序数组中最小的元素删除,并将其添加到有序数组的末尾。

python排序算法之选择排序怎么实现

因为最小的元素是1,所以1被添加到仍为空的有序数组末尾。

如图2-5所示,我们继续对剩余元素进行遍历。这次,最小的元素是2。我们把它添加到已排序的数组末尾。这个操作是正确的,因为已排序数组中的元素一定比未排序数组中的元素小。

python排序算法之选择排序怎么实现

如图2-6所示,重复上述步骤,当未排序数组中只剩下一个元素时,把它添加到已排序的数组末尾,整个数组的排序就完成了。

python排序算法之选择排序怎么实现

三、代码实现

选择排序代码:

nums = [5,3,6,4,1,2,8,7]
res = []   #用于存储已排序元素的数组
while len(nums): #当未排序数组内还有元素时,重复执行选择最小数的代码
 minInd = 0 #初始化存储最小数下标的变量,默认为第一个数
 for i in range(1, len(nums)):
  if(nums[i] < nums[minInd]): #更新最小数的下标
    minInd = i
 temp = nums[minInd]
 nums.pop(minInd) #把最小数从未排序数组中删除
 res.append(temp) #把最小数插入到已排序数组的末尾
print(res)

运行程序,输出结果为:

[1,2,3,4,5,6,7,8]

在程序中,第一个for循环中的i代表了未排序数组中的第一个位置,即有序数组之后的第一个位置。随后,再使用一个for循环,在未排序数组中找到最小值的下标。初始时,将最小值下标minInd赋值为未排序数组的第一个元素的下标。当遇到比当前最小值更小的元素时,只需更新索引并遍历整个数组。把找到的最小值和未排序数组中的第一个元素进行交换后,最小值就被放到了有序数组的末尾位置。

以上就是python排序算法之选择排序怎么实现的详细内容,更多请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯