选择排序
简单选择排序
简单选择排序 VS 直接插入排序
简单选择排序是指每次从序列中选择出最小的元素,每一趟排序可以确定一个元素的最终位置。
空间复杂度:仅仅每趟交换元素,O(1)
时间复杂度:比较次数与初始状态无关,移动次数比较少
稳定:不稳定
补充说明不稳定:
序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。
堆排序
最大堆的定义:对于每个结点,左右孩子的结点的值都小于父节点。
构建初始堆
从最后一个非叶子结点开始,挑选左右子女关键字较大者。之后依次对各结点为根的子树进行筛选。向下调整的时间复杂度和树高有
关,为 O(h)。时间复杂度为 O(n)。
堆排序
每次把堆顶元素输出,然后向下调整。
空间:O(1)
时间:建堆 O(n),之后每次向下调整的时间复杂度为 O(h),故堆排序的时间复杂度为 O(nlog2)
稳定性:不稳定