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 级别的时间复杂度。
总结
以上内容将随着学习和感悟持续修改,欢迎指正。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。