算法思想:从列表中选择最大的一个元素将其添加到一个新的列表中,然后重复上述操作,找出第二大元素.....依次类推,最后新列表必然是一个有序的列表
代码如下:
def get_number(num): import random lst = [] i = 0 while i < num: lst.append(random.randint(0,100)) i += 1 return lst def selectsort(lst): for i in range(0,len(lst)): min = i for j in range(i+1,len(lst)): if lst[min] > lst[j]: min = j lst [min] ,lst[i] = lst[i],lst[min] return lst a = get_number(10) print("排序之前:",a) b = selectsort(a) print("排序之后:",b) ######输出结果####### 排序之前: [48, 34, 52, 65, 29, 81, 69, 9, 19, 89] 排序之后: [9, 19, 29, 34, 48, 52, 65, 69, 81, 89]
算法性能分析:
每次寻找最小(大)值都必须从头开始查找,一共要循环遍历n次。
排序中还需要遍历n次,将找到的值添加到新的列表中。
综合分析,选择排序的时间复杂度为O(n^2)
排序效果: