选择排序算法流程图_算法丨选择排序

本文通过举例说明选择排序算法的原理,它用于将乐队列表按播放次数从多到少排序。虽然随着检查的元素减少,但总体时间复杂度仍为O(n²)。涉及的排序算法操作为O(n)的平方,适用于对效率要求不高的场景。
摘要由CSDN通过智能技术生成

808f41bf88ad4d36b9c3ab9d3e80eb27.png

选择排序

假设计算机存储了很多乐曲。对于每个乐队,都记录了其作品被播放的次数。

73559fc1744588c9f36a9fb2279af03d.png

现在要将这个列表按播放次数从多到少的顺序排列。

第一种办法,是遍历这个表,找出作品播放次数最多的乐队,并将该乐队添加到一个新列表中。

b6814456d17b6f7955bf01ba4cef3ab6.png

然后再次这样做,找出播放次数第二多的乐队。

7797c6ade49384ddcbf6d6180d564dbb.png

以此类推,将得到一个有序列表

579c2f87f35359defa644b1b17d2a3df.png

从计算机的角度出发,查看这样个操作需要多长时间,O(n)时间意味着查看列表中每个元素一次。例如,对乐队列表进行简单查找时,意味着每个乐队都要查看一次。

607f3ea80be8ee1efdd582259358448f.png

要查看播放次数最多的乐队,必须检查列表中的每个元素。这需要的时间为O(n)。因此对于这种时间为O(n)的操作,需要执行n次。

1194405ac70eb6b588ced2325d082c95.png

需要的总时间为O(n*n),即O(n²)

注:需要检查的元素越来越少,但运行时间还是O(n²)(后续会讲)。

排序算法示例代码

# 编写一个用于找出数组中最小元素的函数def indSmallest(arr):    smallest = arr[0]  # 存储最小的值    smallest_index = 0  # 存储最小元素的索引    for i in range(1, len(arr)):        if arr[i] smallest:            smallest = arr[i]            smallest_index = i    return smallest_index# 编写选择排序算法def selectionSort(arr):    newArr = []    for i in range(len(arr)):        smallest = findSmallest(arr)        newArr.append(arr.pop(smallest))    return newArr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值