常见排序算法

选择排序

思想:将待排序数组分为已排序和未排序两个部分。每次从未排序部分里面选择最小的,append到已排序部分。重复直至未排序部分为空。

SelectionSort(A)
	For i = 1 to n do
		Sort[i] = Find-Minimum from A
		Delete-Minimum from A
	Return(Sort)

从 1 遍历到 n,是 的。从未排序部分找最小值也是 的。所以选择排序的时间复杂度是 . 如果我们能利用某种数据结构,在 时间找到最小值,算法复杂度就能降到 .

堆排序

哈哈,这次第二个就介绍堆排序,因为我就是为了学习堆而写的这篇笔记。

竖起耳朵听好了,

Heapsort is nothing but an implementation of selection sort using the right data structure.

— The Algorithm Design Manual