选择排序
选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
算法思想
n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:
步骤1:将数据分为有序部分和无序部分
步骤2:在无序部分找出最小的元素,将最小的元素和无序部分最后一个元素交换,使得无序部分最后一个元素并入有序部分
步骤3:重复第二步,直到无序部分都插入到有序部分结束。
算法代码
方法一:
def select_sort_simple(li):
li_new = []
for i in range(len(li)):
min_val = min(li)
li_new.append(min_val)
li.remove(min_val)
return li_new
方法二:
def select_sort(li):
for i in range(len(li)-1):
min_index = i
for j in range(i + 1, len(li)):
if li[j] < li[min_index]:
min_index = j
li[i], li[min_index] = li[min_index], li[i]
算法分析
最佳情况:T(n) = O(n^2)
最差情况:T(n) = O(n^2)
平均情况:T(n) = O(n^2)
稳定性: 不稳定
空间复杂度: O(1)