mirror of
https://github.com/krahets/hello-algo.git
synced 2026-08-17 14:10:57 +00:00
build
This commit is contained in:
@@ -10,7 +10,7 @@ comments: true
|
||||
|
||||
## 11.8.1 算法流程
|
||||
|
||||
考虑一个长度为 $n$ 的数组,元素是范围 $[0, 1)$ 的浮点数。桶排序的流程如下图所示。
|
||||
考虑一个长度为 $n$ 的数组,元素是范围 $[0, 1)$ 的浮点数。桶排序的流程如图 11-13 所示。
|
||||
|
||||
1. 初始化 $k$ 个桶,将 $n$ 个元素分配到 $k$ 个桶中。
|
||||
2. 对每个桶分别执行排序(本文采用编程语言的内置排序函数)。
|
||||
@@ -18,7 +18,7 @@ comments: true
|
||||
|
||||

|
||||
|
||||
<p align="center"> 图:桶排序算法流程 </p>
|
||||
<p align="center"> 图 11-13 桶排序算法流程 </p>
|
||||
|
||||
=== "Java"
|
||||
|
||||
@@ -409,16 +409,16 @@ comments: true
|
||||
|
||||
为实现平均分配,我们可以先设定一个大致的分界线,将数据粗略地分到 3 个桶中。**分配完毕后,再将商品较多的桶继续划分为 3 个桶,直至所有桶中的元素数量大致相等**。
|
||||
|
||||
如下图所示,这种方法本质上是创建一个递归树,目标是让叶节点的值尽可能平均。当然,不一定要每轮将数据划分为 3 个桶,具体划分方式可根据数据特点灵活选择。
|
||||
如图 11-14 所示,这种方法本质上是创建一个递归树,目标是让叶节点的值尽可能平均。当然,不一定要每轮将数据划分为 3 个桶,具体划分方式可根据数据特点灵活选择。
|
||||
|
||||

|
||||
|
||||
<p align="center"> 图:递归划分桶 </p>
|
||||
<p align="center"> 图 11-14 递归划分桶 </p>
|
||||
|
||||
如果我们提前知道商品价格的概率分布,**则可以根据数据概率分布设置每个桶的价格分界线**。值得注意的是,数据分布并不一定需要特意统计,也可以根据数据特点采用某种概率模型进行近似。
|
||||
|
||||
如下图所示,我们假设商品价格服从正态分布,这样就可以合理地设定价格区间,从而将商品平均分配到各个桶中。
|
||||
如图 11-15 所示,我们假设商品价格服从正态分布,这样就可以合理地设定价格区间,从而将商品平均分配到各个桶中。
|
||||
|
||||

|
||||
|
||||
<p align="center"> 图:根据概率分布划分桶 </p>
|
||||
<p align="center"> 图 11-15 根据概率分布划分桶 </p>
|
||||
|
||||
Reference in New Issue
Block a user