'''
选择排序的原理:对于给定的一组数,经过第一轮比较后得到最小的数,然后将这个最小的数与第一个进行交换位置,接着对不包含第一个数
以外的其他数进行第二轮比较,再次得到最小的数并与第二个数进行位置交换,重复该过程,直到进行比较的数只有一个时为止。例如数组
{38,65,97,76,13,27,49},具体排序过程如下:
第一次排序后:
13 [65,97,76,38,27,49]
第二次排序后:13 27 [97,76,38,65,49]
第三次排序后:13 27 38 [76,97,65,49]
第四次排序后:13 27 38 49 [97,65,76]
第五次排序后:13 27 38 49 65 [97,76]
第六次排序后:13 27 38 49 65 76 [97]
最后一次排序:13 27 38 49 65 76 [97]
'''
#
实现代码
def select_sort(arrays):
count=len(arrays)
for i in range(count-1):
min_index=i
for jin range(i+1,count):
if arrays[min_index]>arrays[j]:
min_index=j
if min_index!=i:
arrays[min_index],arrays[i]=arrays[i],arrays[min_index]
return arrays
看一下执行结果
if __name__ =='__main__':
arrays=[38,65,97,76,13,27,49]
print("排序前:"+str(arrays))
print("排序后:"+str(select_sort(arrays)))
时间复杂度:
选择排序需要进行
n-1轮排序,每一轮排序需要进行n-i次比较;
i的平均值是n/2,时间复杂度为T(n)=n(n-1)/2,再乘每次操作的步骤数,所以选择排序的时间复杂度为)
O(n²)
空间复杂度:O(1)