书中举了一个将音乐的播放列表按照顺序进行排序的例子。我们需要将播放列表按照播放次数进行排序,从而选出最喜欢的音乐。
第一种方法,创建一个新的列表,遍历播放列表,每次将播放量第n大的歌曲放置到新的列表中。这种简单的排序算法的时间复杂度为O(n*n)。这种算法叫做选择排序。
算法实现
下面在python3中实现选择排序,每次选择第n大的元素,从而实现排序。
关键点:
- 良好的编程习惯,将算法分解成寻找最小数的函数,和对数组进行排序的函数
- 利用数组的pop函数,将已经排序的元素删除
```python
// an highlighted block
#选择排序法
#python 3.7
#小灿 2018-12-2
def findsmallest(arr):
#查找列表中最小的元素
smallest = arr[0]#存储最小值
smallest_index = 0#还需要记住最小元素的索引
for i in range(len(arr)):
if smallest > arr[i]:
smallest = arr[i]
smallest_index = i
return smallest_index
def selectionsort(arr):
#函数输入一个无序数组,并返回一个排序好的列表
sorted = []
for i in range(len(arr)):
smallest_index = findsmallest(arr)
sorted.append(arr.pop(smallest_index))
return sorted
arr = selectionsort(arr=[5,1,2,9,12,45,0,7])
print(arr)
报错
- 记住Python的for循环。
- 利用数组的删除函数,所以查找最小值的返回函数返回的是最小元素的位置。
小结
- 计算机内存犹如一个大抽屉
- 需要存储多个元素时,可以使用数组或链表
- 数组的元素都在一起
- 链表的元素时分开的,其中每个元素都存储了下一个元素的地址
- 数组的读取速度很快,链表的插入和删除速度很快