个人理财 算法中使用的二进制堆和二进制搜索树 - 傻瓜

算法中使用的二进制堆和二进制搜索树 - 傻瓜

视频: 24 二叉查找树 2025

视频: 24 二叉查找树 2025
Anonim

特殊类型的树结构是 二元堆 ,它将每个节点元素置于特定的顺序。搜索树使您能够快速查找数据。获取数据项目,将它们按照排序顺序排列在树中,然后搜索该树是查找信息的更快方法之一。

在二进制堆中,根节点始终包含最小值。在查看分支时,您会发现上层分支总是比下层分支和分支小。其效果是保持树的平衡和可预测的顺序,使搜索变得非常有效。成本是保持树木平衡。

<! --1 - >

在应用程序所做的所有任务中,搜索更耗时,也是最需要的。即使添加数据(并在稍后进行排序)确实需要一定的时间,创建和维护数据集的好处也来自于使用它来执行有用的工作,这意味着要搜索重要的信息。因此,有时您可能会使用效率较低的CRUD功能,甚至是不太理想的排序例程,但搜索必须尽可能高效地进行。唯一的问题是,没有一个搜索能够以绝对有效的方式执行每个任务,所以你必须根据你期望做的搜索例程的一部分权衡你的选项。

<!两种更高效的搜索方法涉及使用二叉搜索树(BST)和二进制堆。这两种搜索技术都依赖于树形结构来保存用于访问数据元素的密钥。但是,这两种方法的安排是不同的,这就是为什么一个人在执行某些任务时有优势。这张图显示了一个BST的安排。

使用BST时按键的排列。

请注意,按键的顺序是左边出现较少数字,右边出现较大数字。根节点包含一个位于键范围中间的值,给BST一个易于理解的均衡方法来存储键。将此安排与此处显示的二进制堆对比。

使用二进制堆时的键排列。

每个级别都包含小于上一级别的值,并且根目录包含树的最大键值。另外,在这种特殊情况下,较小的值出现在左侧,而较大的值出现在右侧(尽管这个顺序没有严格执行)。该图实际上描述了一个

二进制最大堆。 还可以创建一个 二进制分钟堆 ,其中根包含最低的键值,每个级别的值都会更高,最高值将显示为树叶的一部分。如前所述,BST在用于执行搜索时比二进制堆有一些优点。以下列表提供了这些优点的一些亮点: 搜索元素需要O(log n)时间,与二进制堆的O(n)时间形成对比。

按顺序打印元素只需要O(log n)时间,与二进制堆的O(n log n)时间形成对比。找到地板和天花板需要O(log n)时间。

  • 定位第K个最小/最大元素需要O(log n)时间树正确配置。
  • 这些时间是否重要取决于您的应用程序。在花费更多时间搜索和减少构建树的情况下,BST趋向于最佳工作。二进制堆往往在密钥经常变化的动态情况下效果最好。二进制堆也提供了一些优点,如下面的列表所述:
  • 创建所需的结构所需的资源更少,因为二进制堆依赖于数组,因此它们也缓存更友好。
  • 构建二进制堆需要O(n)个时间,与BST相比,这需要O(n log n)时间。

使用指针来实现树是没有必要的。依靠二进制堆的变化(例如斐波那契堆)提供了诸如增加和减少O(1)时间的关键时间的优点。

算法中使用的二进制堆和二进制搜索树 - 傻瓜

编辑的选择

如何在Dreamweaver中创建HTML站点地图 - 虚拟人物

如何在Dreamweaver中创建HTML站点地图 - 虚拟人物

创建视觉站点地图,您可以创建网站上所有页面的图表,包括通过导航和子导航的主要页面的互联性。然后,您可以使用这些信息来帮助收集和定义网站内容,并在生成模型时用作指导。

如何创建一个单一的图像CSS3背景 - 傻瓜

如何创建一个单一的图像CSS3背景 - 傻瓜

最简单,最兼容的方式创建一个CSS3的背景,至少有一点点漂亮是使用单个图像。正确的图像说了很多关于您的网站,并提供页面之间的连续性。因为这种方法是标准的,所以你会看到它在很多网站上使用。所有你真正需要的...

如何在CSS3中创建可排序接口 - 傻瓜

如何在CSS3中创建可排序接口 - 傻瓜

电脑要做的,你想要你的CSS3编码来创造这种情况。例如,一台计算机可以按字母顺序将项目比人类可以更快,特别是当列表很长时。但是,排序并不总是合乎逻辑的。您可能希望用户排序...

编辑的选择

尼康D5000数码相机布局 - 傻瓜

尼康D5000数码相机布局 - 傻瓜

这里是一个方便的指针,拨号,按钮和其他外部控制尼康D5000上。 (此数码相机上显示的镜头是与D5000套件一起出售的Nikkor 18-55mm AF-S VR(减震)型号;其他镜头可能不同,标有星号的相机控制具有多种功能。 ...

GoPro相机可以做什么? - 傻瓜

GoPro相机可以做什么? - 傻瓜

GoPro相机可以做什么?这里有一个更相关的问题:你想要做什么?提出这个问题更像是问自己关于自己的愿望和渴望的独特的录像。当你确定你想要捕捉什么时,你所要做的就是将相机连接到...

使用现有的电影为您的GoPro电影 - 傻瓜

使用现有的电影为您的GoPro电影 - 傻瓜

如果你不想创建你自己的GoPro电影照明,你可以尝试使用现有的灯光。以下是在电影中使用可用光源的一些提示。使用白炽灯泡可以使用白炽灯泡来点亮你的电影,但是它们的效果取决于...

编辑的选择

中创建新图像如何在Photoshop CS6中创建新图像 - 傻瓜

中创建新图像如何在Photoshop CS6中创建新图像 - 傻瓜

在Photoshop CS6中从头开始创建一个新的图像。请按照以下步骤使用“新建”功能创建新图像:选择“文件”→“新建”。或者按Ctrl + N(Mac上的Command + N)。输入新文件的名称。如果您不指定名称,Photoshop会为您创建一个名称。 ...

如何在Photoshop CS6中创建新图层 - 虚拟人物

如何在Photoshop CS6中创建新图层 - 虚拟人物

有多种方法可以使用和创建Adobe Photoshop Creative Suite 6中的图层。这些不同的技术可以让您根据您的需求量身定制流程。在打开的图像中创建新的空白图层:单击“图层”面板底部的“创建新图层”图标。您也可以...

如何在Photoshop CS6中创建云 - 虚拟人物

如何在Photoshop CS6中创建云 - 虚拟人物

Photoshop CS6中的云过滤器可以鼓起一片满天的只需点击鼠标即可从头开始。此过滤器使用来自前景和背景颜色的随机值创建云。事实上,大多数Photoshop老手使用这个过滤器太多,他们的图像中有一个惊人的云数量。 ...