Sta*_*ler 8 sorting algorithm big-o bucket-sort
让A1,A2,...,An介于实数[0,2k](k为常数).据了解,对于任何一对Ai,AJ随后|Ai-Aj|>=k/n,
描述在O(n)运行时最坏情况下对数字进行排序的算法.
我知道答案应该是桶式的.无法理解为什么,如果是这样,我如何选择正确数量的水桶?如何在|Ai-Aj|>=k/n实际上帮助?
条件| A i - A j | ≥k/ n表示如果将范围[0,2k]划分为2n个不同的桶(每个桶的大小为2k/2n = k/n),则每个范围中最多只能有一个数字(除非可能,否则数据位于存储桶的端点.)如果您更紧密地创建存储桶(例如,通过创建3n存储桶),则每个存储桶的大小小于k/n,因此最多只能包含一个数字.
然后,您可以使用存储桶排序算法对数字进行排序:
第一步需要O(n)时间,因为您正在创建一个大小为3n的数组.下一步需要时间O(n),因为您每次访问每个O(n)数字并在每一步执行O(1)工作.最后一步还需要O(n)时间,因为你总共访问了3n个桶.
希望这可以帮助!