标签:index ffffff ext size 实现 复杂度 com alt 最新
选择排序def selection_sort(alist): n = len(alist) # 需要进?n-1次选择操作 for i in range(n-1): # 记录最?位置 min_index = i # 从i+1位置到末尾选择出最?数据 for j in range(i+1, n): if alist[j] < alist[min_index]: min_index = j # 如果选择出的数据不在正确位置,进?交换 if min_index != i: alist[i], alist[min_index] = alist[min_index], al ist[i]
alist = [54,226,93,17,77,31,44,55,20]
selection_sort(alist) print(alist)
时间复杂度
最优时间复杂度:O(n ) 最坏时间复杂度:O(n ) 稳定性:不稳定(考虑升序每次选择最?的情况)
选择排序演示
插?排序
插?排序(英语:Insertion Sort)是?种简单直观的排序算法。它的?作原 理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描, 找到相应位置并插?。插?排序在实现上,在从后向前扫描过程中,需要反 复把已排序元素逐步向后挪位,为最新元素提供插?空间。
插?排序分析
def insert_sort(alist): # 从第?个位置,即下标为1的元素开始向前插? for i in range(1, len(alist)): # 从第i个元素开始向前?较,如果?于前?个元素,交换位置 for j in range(i, 0, -1): if alist[j] < alist[j-1]:
alist[j], alist[j-1] = alist[j-1], alist[j]
alist = [54,26,93,17,77,31,44,55,20] insert_sort(alist) print(alist)
时间复杂度
最优时间复杂度:O(n) (升序排列,序列已经处于升序状态) 最坏时间复杂度:O(n ) 稳定性:稳定
插?排序演示
标签:index ffffff ext size 实现 复杂度 com alt 最新
原文地址:http://blog.51cto.com/13517854/2323712