算法——选择排序
Posted 代码综合征
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法——选择排序相关的知识,希望对你有一定的参考价值。
基本的数据结构有数组和链表,本文主要阐述一下数组和链表的优缺点。以及理解选择排序。
数组和链表
数组和链表是基本的存储方式,它们有各自的优缺点。
只要有足够的内存空间,就能为链表分配内存。
当同时读取所有元素时,链表的效率很高。但当你需要跳跃读取,也就是查询时,链表的效率就很低了。
插入多,读取少,用链表;插入少,读取多,用数组。
不过因为数组支持随机访问,所以在很多情况下为了能获得更快的读取速度,还是使用数组。
选择排序
选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。
O(n)意味着查看列表中每个元素一次的话,选择排序的时间复杂度为O(n*n),也就是O(n2)
选择排序的代码为:
def findSmallest(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
print selectionSort([5, 3, 6, 2, 10])
小结
计算机内存犹如一大堆抽屉。
需要存储多个元素时,可使用数组或链表。
数组的元素都在一起。
数组的读取速度很快。
链表的插入和删除速度很快。
在同一个数组中,所有元素的类型都必须相同(都为int、double等)。
以上是关于算法——选择排序的主要内容,如果未能解决你的问题,请参考以下文章