常见排序算法
简单选择排序
简单选择排序和堆排序,简单选择排序的基本思想是每一趟在待排序元素中选取关键字最小的元素加入有序子序列,直到所有元素有序,总共进行 趟。
简单选择排序为不稳定排序。
简单选择排序时间复杂度:
时间复杂度:
空间复杂度:
堆排序
堆排序的基本思想见文末图片,堆排序为不稳定排序。
堆排序时间复杂度:
一个节点每下降一层,最多只需要比较两次关键字。若树高度为 ,某节点在第 层,则将这个节点向下调整最多只需要下降 层,那么对比次数不超过 , 个节点的完全二叉树树高 。
将整棵树调整为大根堆,关键字比较次数不超过:
建堆的过程关键字的对比次数不超过 ,建堆的时间复杂度:
heapSort
总共需要 趟,每一趟完成后都需要将根节点下坠,根节点最多下降 层,因此,每一趟排序的复杂度不超过 ,总共 趟,故总时间复杂度:
故堆排序的时间复杂度:
空间复杂度:
1 |
|

插入排序
插入排序,基本思想是将待排序的记录按其关键字的大小逐个插入到一个有序序列(通常为左半部分),直到所有记录插入完成,是一种稳定排序。
空间复杂度:
平均时间复杂度:
1 |
|

快速排序
快速排序,即交换排序的一种,是对冒泡排序的一种改进,是一种不稳定排序。
平均时间复杂度:
最坏时间复杂度(退化至冒泡排序):
1 |
|

希尔排序
希尔排序,基本思想是选定一个增量 ,将元素按此增量分组(所有相距 的元素为一组),然后在各个子序列内进行插入排序,完成后缩小增量 ,如此反复操作,直到增量 为止,此时就成了标准的插入排序,但此时大部分元素已经有序,只需要少量操作,甚至不用操作即可完成排序。该排序算法为不稳定排序。
希尔排序还是比较绕的,需要多看看,多画一画。
最坏时间复杂度:
在某范围内可达:
目前无法用数学手段证明确切的时间复杂度。
1 |
|
