选择排序

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

1. 算法步骤

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

  3. 重复第二步,直到所有元素均排序完毕。

2. 动图演示

  选择排序

 3. 代码实现

# _*_ coding:utf8 _*_

def selectionSort(arr):
    for i in range(len(arr) - 1):
        
        # 记录最小数的索引
        minIndex = i
        for j in range(i + 1, len(arr)):
            # 反向排序 将 ‘<‘ 改为 ‘>‘
            if arr[j] < arr[minIndex]:
                minIndex = j

        # i 不是最小数时,将 i 和最小数进行交换
        if i != minIndex:
            arr[i], arr[minIndex] = arr[minIndex], arr[i]

    return arr

if __name__ == "__main__":
    arr = [3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48]
    arr_s = selectionSort(arr)
    print(arr_s)

相关推荐