八大排序之选择排序
Posted king-tong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了八大排序之选择排序相关的知识,希望对你有一定的参考价值。
原理:
数组分有序部分和无序部分,通过2层循环控制。第一层循环控制有序部分,第二层循环控制无序部分。用有序部分的最后一个数和无序部分的数比较,无序部分有小的则交换二者位置。
代码实现:
a=[0,-1,9,6,3,2,10,1,2]
def select_sort(arr):
for i in range(len(arr)-1): #不减1次也可以
print("i",i)
min_value_index=i
for j in range(i+1,len(arr)):
print("j",j)
if arr[j]<arr[min_value_index]:
min_value_index=j
arr[i],arr[min_value_index]=arr[min_value_index],arr[i]
print(arr)
return arr
print(select_sort(a))
时间复杂度和算法稳定性:
for j in range(i+1,len(arr)):执行了n-1+n-2+n-3….3+2+1次,一共(n-1)*n/2
所以是O(n²)
稳定性:选择排序是算法不稳定的。比如序列[3,1,3,5,7]第一个3会和第二个1交换位置,和第二个3的相对位置发生了改变。所以是不稳定的。
以上是关于八大排序之选择排序的主要内容,如果未能解决你的问题,请参考以下文章