乐趣区

关于数据结构和算法:常用排序算法之选择排序

抉择排序(Selection Sort)

抉择排序是一种简略直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,寄存到排序序列的起始地位,而后,再从残余未排序元素中持续寻找最小(大)元素,而后放到已排序序列的开端。以此类推,直到所有元素均排序结束。– 维基百科

排序流程示意图:

1. 初始化乱序序列后,序列区域均为未排序序列。
2. 从未排序序列中查找最小(大)的元素,与序列第一个元素进行替换,此时替换后的区域为已排序序列。
3. 反复以上操作,直至遍历残缺个未排序序列。

抉择排序算法的空间复杂度为 O(1),工夫复杂度为 O(n2)

代码演示:

func selectionSort(array [6]int) [6]int {if len(array) == 1 {return array}

    for i := 0; i < len(array) -1; i++ {
        key := i
        for j := i; j < len(array); j ++ {if array[j] < array[key] {key = j}
        }

        if i != key {temp := array[i]
            array[i] = array[key]
            array[key] = temp
        }
    }

    return array
}
退出移动版