算法笔记:桶排序

今天做leetcode 164最大间距的时候,看到这种具有线性时间复杂度的排序方法。第一次看这个算法,真是惊掉了下巴,排序算法还真是博大精深啊,之前我的博客也总结了不少排序算法,自认为对排序也算是略懂一点,没想到还是不断有经典常用的排序算法刷新我对排序算法的认识。

桶排序,简单来说,就是一种用空间换时间的排序的方法,我们通过多放置“桶”,扫描需要排序的数组的时候把元素放到对应的桶中,之后对于每个桶中的元素(应该极少),选择一种排序方法进行桶内排序,最后从左到右把桶内的元素组合,构成有序的序列。下面的这个动图生动地体现了这个过程。

复杂度分析

  • 平均时间复杂度:O(n + k)
  • 最佳时间复杂度:O(n + k)
  • 最差时间复杂度:O(n ^ 2)
  • 空间复杂度:O(n * k)
  • 稳定性:稳定

代码参考:算法——排序算法之桶排序

发布了85 篇原创文章 · 获赞 100 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/caozixuan98724/article/details/89743603