八大排序之选择排序

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的相对位置发生了改变。所以是不稳定的。

以上是关于八大排序之选择排序的主要内容,如果未能解决你的问题,请参考以下文章

八大排序之选择类排序

八大排序之选择排序

八大排序之选择排序

八大排序算法之三选择排序—简单选择排序(Simple Selection Sort)

八大排序算法之四选择排序—堆排序(Heap Sort)

八大排序之基本概念简介