选择排序
假设计算机存储了很多乐曲。对于每个乐队,都记录了其作品被播放的次数。
现在要将这个列表按播放次数从多到少的顺序排列。
第一种办法,是遍历这个表,找出作品播放次数最多的乐队,并将该乐队添加到一个新列表中。
然后再次这样做,找出播放次数第二多的乐队。
以此类推,将得到一个有序列表
从计算机的角度出发,查看这样个操作需要多长时间,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