标签:baidu return 情况 技术分享 tar log 占用 最小 class
数组 | 链表 | |
读取 | O(1) | O(n) |
插入 | O(n) | O(1) |
删除 | O(n) | O(1) |
数组适合读取操作,链表适合插入和删除
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法
例如 :
对数组[5,4,3,2,1]进行排序
第一步 找出最小的 数字1 放入新数组[1],执行步数为 4 原数组变为[5,4,3,2]
第二步 从[5,4,3,2]找出最小的 数字2 放入新数组[1,2],执行步数为 3 原数组变为[5,4,3]
第三步 从[5,4,3]找出最小的 数字3 放入新数组[1,2,3],执行步数为 2 原数组变为[5,4]
第四步 从[5,4]找出最小的 数字4 放入新数组[1,2,3,4],执行步数为 1
第五步 将最后一个 5 插入 [1,2,3,4,5]。至此 排序结束,
def selectSort(arr): sort=[] step=0 for j in range(len(arr)): smallest=arr[0] index=0 # 从第一位开始 for i in range(1,len(arr)): if arr[i]<smallest: step+=1 smallest=arr[i] index=i sort.append(arr.pop(index)) print u"执行步数",step print sort return sort selectSort([5,4,3,2,1]) selectSort([7,6,5,4,3,2,1]) selectSort([8,7,6,5,4,3,2,1])
上面的例子是选择排序最糟糕的情况下 执行情况,操作数为n+(n-1)+(n-2)+.......1
因为每次必须检查数组中所有的元素,这个运行时间为O(n),这样的操作要执行n次 。所有需要的总运行时间为:O(n*n) 即O(n2)。
选择排序不是一种快速的排序方式
标签:baidu return 情况 技术分享 tar log 占用 最小 class
原文地址:http://www.cnblogs.com/zimuzimu/p/7087787.html