1、在数据完全无序的情况下,哪种最快?
2、在大部分数据有序的情况下,哪种最快?
当N很小时,快速排序慢,归并排序快
当N很大时,并且有序程度高时,快速排序最快
当N很大时,并且有序程序低时,堆排序最快
堆排序
- 特性:完全二叉树
- 不稳定
大顶堆:最大值就是堆顶的根节点
arr[i] >= arr[2i+1] && arr[i] >= arr[2i+2]
小顶堆:最小值就是堆顶的根节点
arr[i] <= arr[2i+1] && arr[i] <= arr[2i+2]
归并排序
- O(n log n)
- 特性:完全二叉树;分治法
- 稳定排序
补:timsort : 结合归并和插入排序的算法
在java的Arrays.sort()源码中有使用到
本文对比了不同排序算法在各种情况下的表现。介绍了快速排序、归并排序及堆排序的特点与适用场景,强调了它们在数据有序程度不同的情况下所展现出的速度优势。
3790

被折叠的 条评论
为什么被折叠?



