N^2 级别的排序算法包括:冒泡排序、选择排序、插入排序、希尔排序(亚二次)

排序算法的实现可以看知乎的这篇文章,里面带有程序和动图展示排序过程。

算法的实现已经随处可见了,这里只是总结一下我对 n^2 级别排序的一席思考。

n^2 级别排序算法都有哪些特点?

通过相邻元素的比较和交换完成整个排序过程(希尔排序打破了相邻的比较从而首次突破二次方)

为什么是 n^2 的复杂度

这个问题延伸一下就是:

为什么通过相邻元素比较和交换的排序就是 n^2 复杂度呢?

这里要引入逆序数的概念,因为一个随机数列的平均逆序数都是 n(n+1)/4 个逆序数,逆序的数量是 n^2 级别的,通过相邻元素比较和交换每次只能改变一个逆序数,那么改变所有逆序数就是 n^2 级别的。

n^2 级别排序有使用的场景吗

n^2 级别时间复杂度的排序是无法在工作环境中使用的,因为 n^2 总是大于 nlogn,所以我们更应该选择 nlogn 级别的的排序,除非是近乎有序的数组,插入排序可以提升到 n 级别的时间复杂度。

总结

以上内容将随着学习和感悟持续修改,欢迎指正。


Donne
694 声望25 粉丝

知其然,知其所以然。


引用和评论

0 条评论