目前最快的排序算法
墨初 知识笔记 75阅读
常见的排序算法有哪些?
答:下面介绍几种常见的排序算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序、堆排序、计数排序、桶排序、基数排序的思想,其代码均采用Java实现。 1. 冒泡排序 冒泡排序是一种简单的排序算法。 它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
归并排序算法为什么这么快?
答:这个算法之所以快,是因为它充分利用了现实世界的待排序数据里面,有很多子串是已经排好序的不需要再重新排序,利用这个特性并且加上合适的合并规则可以更加高效的排序剩下的待排序序列。 当Timsort运行在部分排序好的数组里面的时候,需要的比较次数要远小于 n l o g n ,也是远小于相同情况下的归并排序算法需要的比较次数。 但是和其他的归并排序算法一样,最坏情况下的时间复杂度是 O ( n l o g n) 的水平。 但是在最坏的情况下,Timsort需要的临时存储空间只有 n / 2 ,在最好的情况下,需要的额外空间是常数级别的。 从各个方面都能够击败需要 O ( n) 空间和稳定 O ( n l o g n) 时间的归并算法。 OK!
什么是选择排序?
答:选择排序 选择排序是一种简单直观的排序算法,它也是一种交换排序算法,和冒泡排序有一定的相似度,可以认为选择排序是冒泡排序的一种改进。 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
什么是计数排序?
答:计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。 网络中很多博文写的桶排序实际上都是计数排序,并非标准的桶排序,要注意辨别。 我们使用 动态数组ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。