算法——选择排序

Posted 代码综合征

tags:

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

基本的数据结构有数组和链表,本文主要阐述一下数组和链表的优缺点。以及理解选择排序。

数组和链表

数组和链表是基本的存储方式,它们有各自的优缺点。

只要有足够的内存空间,就能为链表分配内存。

当同时读取所有元素时,链表的效率很高。但当你需要跳跃读取,也就是查询时,链表的效率就很低了。

插入多,读取少,用链表;插入少,读取多,用数组。

不过因为数组支持随机访问,所以在很多情况下为了能获得更快的读取速度,还是使用数组。

选择排序

选择排序的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

O(n)意味着查看列表中每个元素一次的话,选择排序的时间复杂度为O(n*n),也就是O(n2)

选择排序的代码为:

 
   
   
 
  1. def findSmallest(arr):

  2.    smallest = arr[0]

  3.    smallest_index = 0

  4.    for i in range(1, len(arr)):

  5.        if arr[i] < smallest:

  6.            smallest = arr[i]

  7.            smallest_index = i

  8.    return smallest_index

  9. def selectionSort(arr):

  10.    newArr = []

  11.    for i in range(len(arr)):

  12.        smallest = findSmallest(arr)

  13.        newArr.append(arr.pop(smallest))

  14.    return newArr

  15. print selectionSort([5, 3, 6, 2, 10])

小结

  • 计算机内存犹如一大堆抽屉。

  • 需要存储多个元素时,可使用数组或链表。

  • 数组的元素都在一起。

  • 数组的读取速度很快。

  • 链表的插入和删除速度很快。

  • 在同一个数组中,所有元素的类型都必须相同(都为int、double等)。


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

排序算法之冒泡选择插入排序(Java)

排序算法之冒泡选择插入排序(Java)

选择排序(简单选择排序堆排序的算法思想及代码实现)

《算法》笔记 3 - 选择排序插入排序希尔排序

python学习选择排序算法简单代码

Java数据结构—排序算法