算法丨选择排序

Posted One丨Python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法丨选择排序相关的知识,希望对你有一定的参考价值。

This browser does not support music or audio playback. Please play it in Weixin or another browser. 算法丨选择排序


选择排序


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

算法丨选择排序


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


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

算法丨选择排序


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

算法丨选择排序


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

算法丨选择排序


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

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

需要的总时间为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

以上是关于算法丨选择排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构算法 - 冒泡选择和插入排序

Nature 亮点丨精确预测蛋白结构可以依赖Google吗?DeepMind团队开发新型深度学习算法精确预测蛋白结构

C语言入门算法丨冒泡排序算法详解,绝不摆烂。

C++基础语法梳理:算法丨十大排序算法

转载丨除了冒泡排序,你知道 Python 内建的排序算法吗?

数据结构与算法篇-基数排序