【发布时间】:2020-08-26 15:47:39
【问题描述】:
所以我偶然发现了基于非比较排序的算法,确切地说是桶排序,我无法完全理解它为什么好。
我有一个想法,但我需要有人确认。
假设我要对一个 1000 个元素的数组进行排序。如果它是均匀分布的,并分桶成 10 个桶,每个桶有 100 个元素。
使用 n log(n) 算法将 100 个元素排序 10 次 = 10 * 100 log(100) = 1000 log(100) = 2000
同时使用 n log(n) 算法对 1000 个元素进行排序 = 1000 log(1000) = 3000
所以算法利用了如果 n = m + l 则 (m+l)^2 > m^2 + l^2 并且同样适用于 n log(n) 算法
所以数据分桶越均匀,桶排序的性能就越好
这样对吗?
以及桶的最佳数量是多少? (我觉得这是一个时空权衡的事情,但也取决于被排序数据的一致性)
【问题讨论】:
标签: algorithm sorting bucket-sort