一、什么是选择排序

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。


二、选择排序的思想

  • 每次循环时假定最前面的值时是最大或最小的

  • 然后找到后面值中最大或最小值与之交换

  • 选择排序的时间复杂度也是O(n^2),但是由于交换次数比冒泡排序要少,所以比冒泡排序快


三、Python代码实现

import random
import time

def selection_sort(array):
    length = len(array)
    for i in range(0, length-1):
        min = i
        for j in range(i+1, length):
            if array[min] > array[j]:
                min = j
        array[i], array[min] = array[min], array[i]
    return array

if __name__ == "__main__":
    start_time = time.time()

    array = []
    for i in range(1000):
        array.append(random.randrange(10000))
    print(array)

    new_array = selection_sort(array)
    print(new_array)

    end_time = time.time()
    print(end_time-start_time)

327578f2132e395356213b5547c9aeff.png

    最外层循环时,先假定i当前值时最小的,然后内循环遍历剩余值,当发现比i小的值时,先不交换,仅仅把min的值换成较小的值的下标,等内循环结束时,再交换i与min下标的值。