简单选择排序
属于选择排序
两两比较大小,找出极值(极大值或极小值)被放置在固定的位置
简单选择排序总结
简单选择排序需要数据一轮轮比较,并在每一轮汇总发现极值
没有办法知道当前轮是否已经达到排序要求,但是可以知道极值是否在目标索引位置上
遍历次数1,。。,n-1之和n(n-1)/2
时间复杂度0(n^2)
减少了交换次数,提高了效率,性能略好于冒泡法
简单选择排序实现
#简单选择排序
x = [1,9,8,5,6,7,4,3,2]
length = len(x)
for i in range(length):
maxnum = i
for j in range(i+1,length):
if x[j] > x[maxnum]:
maxnum = j
if maxnum != i:
x[i],x[maxnum] = x[maxnum],x[i]
print(x)
#简单选择排序进化
x = [1,9,8,5,6,7,4,3,2]
length = len(x)
for i in range(length//2):
maxnum = i
minnum = -i-1
for j in range(i + 1, length - i):
if x[j] > x[maxnum]:
maxnum = j
if x[-j-1] < x[minnum]:
minnum = -j-1
if maxnum != i:
x[maxnum],x[i] = x[i],x[maxnum]
if maxnum != i and i == length + minnum:
minnum = maxnum
if minnum != -i-1:
x[minnum],x[-i-1] = x[-i-1],x[minnum]
print(x)