《图解算法》阅读05—选择排序

书中举了一个将音乐的播放列表按照顺序进行排序的例子。我们需要将播放列表按照播放次数进行排序,从而选出最喜欢的音乐。
第一种方法,创建一个新的列表,遍历播放列表,每次将播放量第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循环。
  • 利用数组的删除函数,所以查找最小值的返回函数返回的是最小元素的位置。

小结

  • 计算机内存犹如一个大抽屉
  • 需要存储多个元素时,可以使用数组或链表
  • 数组的元素都在一起
  • 链表的元素时分开的,其中每个元素都存储了下一个元素的地址
  • 数组的读取速度很快,链表的插入和删除速度很快
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值