第八章学习笔记
一、插入排序
1.直接插入
时间复杂度:O(nn)
稳定性:稳定
2.折半插入
基于插入排序和折半查找,用折半查找来找到插入位置,节省时间。
时间复杂度:O(n2)
稳定性:稳定
3.希尔排序
时间复杂度:O(n2)
稳定性:不稳定
二、选择排序
1.简单选择
找到序列未排序部分的最大值,放到已排序部分的末尾,重复以上步骤直到未排序部分长度为1,简单粗暴。
时间复杂度:O(n2)
稳定性:不稳定
2.堆排序
将序列转化成完全二叉树,使树中所有非叶子端结点的值均不大于其孩子结点的值。
时间复杂度:O(nlog2n)
稳定性:不稳定
三、交换排序
1.冒泡排序
从第一个元素开始,该元素和后一个元素比较,若后者大则两者交换位置,结束后比较下一对元素,到第一趟完成后最后一个元素必定是最大的。剔除最后一个元素重复上述过程,一直到没有元素需要比较。
时间复杂度:O(n2)
稳定性:稳定
2.快速排序
在序列中选定一个基准值,将小于基准值的值放到序列左边,大于基准值的值放到序列右边,然后对左右两边递归。
时间复杂度:O(nlog2n)
稳定性:不稳定
四、归并排序