Algorithm 桶排序分析

Algorithm 桶排序分析,algorithm,Algorithm,一个简单的例子是桶排序。铲斗分拣工作,额外 信息必须可用。输入a1,a2,必须 仅由小于m的正整数组成。明显地 可以对此进行扩展。如果是这样,那么 算法很简单:保留一个名为count的数组,大小为m,即 初始化为所有0。因此,count有m个单元格或桶,它们是 最初是空的。读取ai时,将计数[ai]增加1。毕竟 读取输入,扫描计数数组,打印出一个表示 已排序列表的。该算法采用Om+n;如果m是开着的,那么 总数正在增加 虽然这个算法似乎违反了下限,但事实证明 这不是因为它使用了比简单更强大的操作

一个简单的例子是桶排序。铲斗分拣工作,额外 信息必须可用。输入a1,a2,必须 仅由小于m的正整数组成。明显地 可以对此进行扩展。如果是这样,那么 算法很简单:保留一个名为count的数组,大小为m,即 初始化为所有0。因此,count有m个单元格或桶,它们是 最初是空的。读取ai时,将计数[ai]增加1。毕竟 读取输入,扫描计数数组,打印出一个表示 已排序列表的。该算法采用Om+n;如果m是开着的,那么 总数正在增加

虽然这个算法似乎违反了下限,但事实证明 这不是因为它使用了比简单更强大的操作 比较。通过增加适当的bucket,算法 基本上在单位时间内执行m路比较。这是相似的 扩展哈希中使用的策略。这显然不在计划之内 已证明下限的模型

我对上一段的质询

作者所说的使用比简单比较更强大的操作是什么意思? 通过增加适当的bucket,算法如何执行m路比较?顺便问一下,什么是m路比较? 上述桶排序策略与可扩展散列有何关联?有人能举一个可扩展散列的例子吗? 谢谢

计数[arr[i]]比比较更“强大”,因为它是 实际*count+arr[i]。每个比较op有2个可能的 值:true/false,虽然此op的值范围更广, [所有可能的地址!]因此它更“强大” 通过增加元素,算法“知道”以后有多少个元素 元素在这个“桶”中的位置,以及以后的位置:只是“溢出”了 水桶里的东西都出来了。作者所指的m-方式比较, 我假设是与m个可能输出的“比较”,正如我上面解释的。 这基本上是一个散列,将元素散列到范围 [0,m]。这里的重要性和区别在于:两个要素是 散列到相同的数字,当且仅当它们相同时。这 当然,只有使用相同的值对元素进行散列,才能实现此目标 [或更小]范围,然后是图像。