【S-排序】python实现八大排序算法之2-选择排序(Selection Sort)

选择排序(Selection Sort)

算法原理:

  • 每次排序默认开始的下标为i的元素为最小值,后面j的循环查找下表为i+1之后序列的最小值的下标,查找出来之后再将这个最小值与开始默认开头的最小值交换。
  • 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。
  • 优点:移动数据的次数已知(n-1次); 缺点:比较次数多,不稳定。
'''
Creat by HuangDandan
2018-08-12
[email protected]

#插入法排序
#每次排序默认开始的下标为i的元素为最小值,后面j的循环查找下表为i+1之后序列的最小值的下标,查找出来之后再将这个最小值与开始默认开头的最小值交换。
'''

def SelectSort(Lst):
    for i in range(0, len(Lst)):
        vale = Lst[i]  #每次循环开始默认第i个元素是最小值
        min = i
        for j in range(i+1, len(Lst)):   #找到从i+1开始的序列中最小值的索引(下表)
            if Lst[j] < vale:
                vale = Lst[j]
                min = j

        Lst[min], Lst[i] = Lst[i], Lst[min]  #把最小值和最外面循环的第一个值交换


# 找到从i+1开始的序列中最小值的索引(下标)
def SelectSort(Lst):
    for i in range(0, len(Lst)):
        #vale = Lst[i]  #每次循环开始默认第i个元素是最小值
        min = i
        for j in range(i+1, len(Lst)):   #找到从i+1开始的序列中最小值的索引(下表),这里的Lst[min]的最小值通过min=j进行更新,所以是对的
            if Lst[j] < Lst[min]:
                #vale = Lst[j]
                min = j

        Lst[min], Lst[i] = Lst[i], Lst[min]  #把最小值和最外面循环的第一个值交换

参考书籍:裘宗燕 数据结构与算法:Python的语言描述
参考博客:
https://www.jb51.net/article/123664.htm?utm_medium=referral
https://blog.csdn.net/bitboss/article/details/51559034
https://www.cnblogs.com/chengxiao/p/6104371.html

你可能感兴趣的:(【S-排序】python实现八大排序算法之2-选择排序(Selection Sort))