树和森林 查找

讨论3.1 黄金分割查找?

在二分查找中,我们是取mid等于left和right的中间值,即用等分的方法进行查找.

那为什么一定要等分呐?能不能进行“黄金分割”?也就是mid=left+0.618(right-left),当然mid要取整数。如果这样查找,时间复杂性是多少?也许你还可以编程做个试验,比较一下二分法和“黄金分割”法的执行效率。

c7bed56c2c47405e947f15947296aba9.jpg

黄金分割查找(Golden Section Search)是一种基于斐波那契数列的查找算法,它可以将查找区间划分为两个部分,并选择其中一个部分的中间点作为查找点。这种查找算法的时间复杂度为O(log n),与二分查找相同。

在黄金分割查找中,我们首先将查找区间划分为两个部分,其中一个部分的长度为黄金比例(约为0.618)与另一个部分的长度之和。然后,我们在其中一个部分的中间点进行查找。如果目标元素在这个中间点位置上,则查找结束。否则,我们将根据目标元素与中间点的相对位置来确定下一步的查找区间。

相比于二分查找,黄金分割查找的不同之处在于它将查找区间划分为两个部分,而不是简单地等分。这种划分方式可以使得查找更加细致,从而提高查找的精度和效率。

下面是一个简单的C语言实现黄金分割查找的示例代码:

c

#include <stdio.h>

#include <math.h>

double golden_section_search(double a, double b, double x) {

    double mid, fmid;

    int n = 0;

    while (fabs(a - b) > 1e-6) { // 判断区间是否足够小

        n++;

        mid = a + 0.618 * (b - a); // 计算中间点

        fmid = mid - x; // 计算中间点处的值

        if (fmid < 0) { // 如果目标函数在左半部分,则将右边界缩小为mid

            b = mid;

        } else { // 如果目标函数在右半部分,则将左边界缩小为mid+b-a

            a = mid + b - a;

        }

    }

    printf("Number of iterations: %d\n", n); // 输出迭代次数

    return mid; // 返回中间点处的值

}

这个示例代码实现了一个黄金分割查找函数golden_section_search,它接受三个参数:查找区间的左端点a、右端点b和目标函数在区间内的值x。函数使用while循环进行迭代,直到区间的长度足够小(小于1e-6)为止。在每次迭代中,函数计算中间点的位置和目标函数在中间点处的值fmid,然后根据fmid的正负来确定下一步的查找区间。最后,函数返回中间点处的值。

 树(Tree)是一种非线性的数据结构,通常由节点(Nodes)和边(Edges)组成。树可以表示层次结构,其中节点表示实体,边表示节点之间的关系。

树的基本特点是:

有且仅有一个根节点(Root Node),没有父节点。

其他节点可以有零个或多个子节点(Child Nodes),每个子节点只能有一个父节点。

树中的节点不能有环路(Cycle),即从某个节点出发沿着边不能回到出发节点。

树中的边没有权重,即节点之间的关系没有大小之分。

树有很多种,如二叉树(Binary Tree)、完全二叉树(Complete Binary Tree)、满二叉树(Full Binary Tree)、平衡二叉树(Balanced Binary Tree)、红黑树(Red-Black Tree)等。

树的应用非常广泛,如文件系统、图形学、人工智能、数据压缩等。在计算机科学中,树是常见的数据结构之一,也是许多算法的基础。

7ecd2bd3aa024b9f99aedcae8951ad13.png

 d8ca0e3fcc7e440aa75062f3d5988adb.png

5caacbea2fd9454f8d2f5d1c6bcf4a6a.png

森林

在数据结构中,森林是一个由多个不相交的树组成的集合。每个树都由一个根节点和若干个子树组成,而每个子树也是一个由根节点和若干个子树组成的树。森林中的树之间没有直接的关联,它们之间的关系是通过森林这个集合来定义的。

森林常用于表示一个有多个子问题的复杂问题,每个子问题都可以被视为一棵独立的树。通过将所有子问题的解组合起来,可以获得复杂问题的解。

在数据结构中,森林通常用数组或链表来实现。在数组实现中,每个树都存储在一个连续的内存块中,而树的节点则按照树的深度(从根节点到叶节点的路径长度)排列。在链表实现中,每个树都由一个头节点和若干个子节点组成,子节点通过指针与它们的父节点相连。

森林是一种由多个不相交的树组成的集合,常用于表示一个有多个子问题的复杂问题。

在数据结构中,森林是一个由多个不相交的树组成的集合。每个树都由一个根节点和若干个子树组成,而每个子树也是一个由根节点和若干个子树组成的树。森林中的树之间没有直接的关联,它们之间的关系是通过森林这个集合来定义的。

森林常用于表示一个有多个子问题的复杂问题,每个子问题都可以被视为一棵独立的树。通过将所有子问题的解组合起来,可以获得复杂问题的解。

在数据结构中,森林通常用数组或链表来实现。在数组实现中,每个树都存储在一个连续的内存块中,而树的节点则按照树的深度(从根节点到叶节点的路径长度)排列。在链表实现中,每个树都由一个头节点和若干个子节点组成,子节点通过指针与它们的父节点相连。

总之,森林是一种由多个不相交的树组成的集合,常用于表示一个有多个子问题的复杂问题。

0a11a326965d4a45be181eb08caf12fe.png

d5caff29e52a49078fb50d6a4025f16e.png

b99cb67c862a42929e32cb963d4db1c7.png

45b052dba5dc47d1a2c585d022255cb3.png

12d25409f58d40e69acc8e45f897273b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/150227.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【腾讯云 HAI域探秘】浅尝一番AI绘画

前言 腾讯云高性能应用服务 HAI 是为开发者量身打造的澎湃算力平台。无需复杂配置&#xff0c;便可享受即开即用的GPU云服务体验。 我之前也参与锅一个AI绘画的活动&#xff0c;是基于InsCode的&#xff0c;都可以在线训练大模型&#xff0c;开发自己的AI应用程序。 这次腾讯…

Supervisor管理器

如果宝塔版本是低于 7.9 可以选用supervisor 管理器&#xff0c;宝塔7.9及以上版本此工具可能出BUG&#xff0c;请选择 堡塔应用管理器跳过本页&#xff0c;看堡塔应用管理器 Supervisor 管理器 和 堡塔应用管理器 二选一使用 步骤总结&#xff1a; 一、切换PHP命令行版本和站…

天机学堂-1、项目搭建,微服务架构设计

1.学习背景 各位同学大家好&#xff0c;经过前面的学习我们已经掌握了《微服务架构》的核心技术栈。相信大家也体会到了微服务架构相对于项目一的单体架构要复杂很多&#xff0c;你的脑袋里也会有很多的问号&#xff1a; 微服务架构该如何拆分&#xff1f; 到了公司中我需要自…

hyper-v外部网络,ssh服务正常,可以ping通虚拟机,但是无法远程连接虚拟机。

问题&#xff1a; ssh服务正常&#xff0c;可以ping通虚拟机&#xff0c;虚拟机可上网&#xff0c;一切正常&#xff0c;但是无法远程连接虚拟机。 报错&#xff1a;Network error: Connection refused 解决&#xff1a; 在本机的网络设置中&#xff0c;这个东西不知道是什么…

立体库堆垛机控制程序故障输出功能块

故障输出块 A "提升变频器故障" // O "提升变频器通讯故障" // ON "提升变频器准备好" "提升变频故障" A "水平变频器故障" // O "水平变频器通讯故障" // ON…

4.以docker容器生成镜像推送到阿里云镜像仓库

1.开通阿里云镜像仓库 1.1 登录阿里云&#xff0c;访问容器镜像服务。地址如下&#xff1a; https://cr.console.aliyun.com/cn-shanghai/instances 1.2 个人学习为例&#xff0c;创建个人版实例 1.2.1 点击个人实例 1.2.2 .创建个人实例 1.2.3 创建完成后&#xff0c;设置…

3.4-初识Container

常用的docker container命令&#xff1a; 1、基于image创建docker container命令&#xff1a; docker run lvdapiaoliang/hello-docker 2、列举当前本地正在运行的container容器命令&#xff1a; docker container ls 3、列举当前本地所有的container容器命令(包括正在运行的和…

Ubuntu 搜狗输入法无法输入中文解决方案(不需要重装,不需要重启服务器)

Ubuntu 搜狗输入法突然无法输入中文&#xff0c;上午还好用&#xff0c;下午就不好用了&#xff0c;直接上解决方案 1.终端输入pidof fcitx找到搜狗的进程&#xff0c;如下图红框中的就是进程 2.直接杀掉这个进程 3.其实到第二步&#xff0c;如果搜狗输入法自动重启了&#xf…

【python】—— 内置类型、运算符、表达式、关键字

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

Unity中Shader矩阵的行列式

文章目录 前言一、什么是矩阵的行列式&#xff1f;1、只有方阵才有行列式&#xff08;即 n X n 的矩阵&#xff09;2、数学上表示为 det(A) 或者 |A|3、行列式可以看做有向面积 或 体积 在空间中的变化影响 二、2 x 2矩阵的行列式三、3 x 3矩阵的行列式四、行列式计算总结五、使…

浙江大学数据结构陈越 第一讲 数据结构和算法

数据结构 数据结构是计算机科学中用来组织和存储数据的方式。它可以理解为一种组织数据的方式&#xff0c;能够有效地管理和操作数据&#xff0c;以及提供对数据进行存储、检索、更新和删除等操作的方法。常见的数据结构包括数组、链表、栈、队列、树和图等&#xff0c;它们各自…

神经网络常见评价指标AUROC(AUC-ROC)、AUPR(AUC-PR)

神经网络的性能可以通过多个评价指标进行衡量&#xff0c;具体选择哪些指标取决于任务的性质。以下是神经网络中常见的评价指标&#xff1a; 准确性&#xff08;Accuracy&#xff09;&#xff1a; 准确性是最常见的分类任务评价指标&#xff0c;表示模型正确预测的样本数占总样…

【小黑送书—第六期】>>AI时代,程序员如何应对挑战——《AI时代系列书籍》

在AI时代&#xff0c;程序员面临着新的机遇和挑战。为了适应这个快速发展的时代&#xff0c;掌握新技能并采取相应的应对策略是至关重要的。 对于办公人员或程序员来说&#xff0c;利用AI可以提高工作效率。例如&#xff0c;使用AI助手可以帮助自动化日常的重复性工作&#xff…

【Mycat2实战】二、Mycat安装部署

1. Mycat下载 Mycat官网下载地址&#xff0c;点击直接前往&#xff1a;http://www.mycat.org.cn/ Mycat 有提供编译好的安装包&#xff0c;支持 windows、Linux、Mac、 Solaris 等系统上安装与运行。 本文及后续系列的文章都是使用Linux的系统进行操作。 这里我们选择使用文…

【保姆级教程】Linux安装JDK8

本文以centos7为例&#xff0c;一步一步进行jdk1.8的安装。 1. 下载安装 官网下载链接&#xff1a; https://www.oracle.com/cn/java/technologies/downloads/#java8 上传jdk的压缩包到服务器的/usr/local目录下 在当前目录解压jdk压缩包&#xff0c;如果是其它版本&#xf…

Java --- JVM之StringTable

目录 一、String的基本特性 二、String的内存分配 2.1、String内存分布图 三、字符串拼接操作 3.1、字符串拼接操作底层原理 3.2、拼接操作与append操作效率对比 四、intern()方法 4.1、intern()效率 五、StringTable的垃圾回收 一、String的基本特性 1、String字符…

彩票双色球预测工具1.0

搏一搏 单车变跑车 祝各位开出大奖&#xff01;&#xff01; 后续会持续更新&#xff0c;欢迎关注&#x1f44f; from random import randintdef gener_blue_ball():return randint(1, 33)def gener_blue_ball_s():blue_ball_set set()while True:if len(blue_ball_set) 6:b…

【数据结构】希尔排序(最小增量排序)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;数据结构 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵 希望大佬指点一二 如果文章对你有帮助…

【数据结构初阶】链表OJ

链表OJ 题目一&#xff1a;移除链表元素题目二&#xff1a;反转链表题目三&#xff1a;链表的中间节点题目四&#xff1a;链表中倒数第k个结点题目五&#xff1a;合并两个有序链表题目六&#xff1a;链表分割题目七&#xff1a;链表的回文结构题目八&#xff1a;相交链表题目九…
最新文章