首页 > 其他分享 >10.10日

10.10日

时间:2023-10-20 21:47:15浏览次数:28  
标签:二分 arr target 查找 搜索 二叉树 10.10

  今天学习了二叉树的性质,并进行了简单计算应用练习,马原水了,因为昨天的链接数据库还未完成,熬了个大夜最终发现Tomcat的配置环境存在问题。

二分搜索树

一、概念及其介绍

二分搜索树(英语:Binary Search Tree),也称为 二叉查找树 、二叉搜索树 、有序二叉树或排序二叉树。满足以下几个条件:

  • 若它的左子树不为空,左子树上所有节点的值都小于它的根节点。
  • 若它的右子树不为空,右子树上所有的节点的值都大于它的根节点。

它的左、右子树也都是二分搜索树。

如下图所示:

二、适用说明

二分搜索树有着高效的插入、删除、查询操作。

平均时间的时间复杂度为 O(log n),最差情况为 O(n)。二分搜索树与堆不同,不一定是完全二叉树,底层不容易直接用数组表示故采用链表来实现二分搜索树。

 查找元素插入元素删除元素
普通数组 O(n) O(n) O(n)
顺序数组 O(logn) O(n) O(n)
二分搜索树 O(logn) O(logn) O(logn)

下面先介绍数组形式的二分查找法作为思想的借鉴,后面继续介绍二分搜索树的查找方式。

package runoob.binarySearch;

/**
 * 二分查找法
 */
public class BinarySearch {
    // 二分查找法,在有序数组arr中,查找target
    // 如果找到target,返回相应的索引index
    // 如果没有找到target,返回-1
    public static int find(Comparable[] arr, Comparable target) {

        // 在arr[l...r]之中查找target
        int l = 0, r = arr.length-1;
        while( l <= r ){

            //int mid = (l + r)/2;
            // 防止极端情况下的整形溢出,使用下面的逻辑求出mid
            int mid = l + (r-l)/2;

            if( arr[mid].compareTo(target) == 0 )
                return mid;

            if( arr[mid].compareTo(target) > 0 )
                r = mid - 1;
            else
                l = mid + 1;
        }

        return -1;
    }
}

 

标签:二分,arr,target,查找,搜索,二叉树,10.10
From: https://www.cnblogs.com/binglinll/p/17778042.html

相关文章

  • NAKIVO Backup & Replication 10.10 - 快速高效能的备份解决方案
    NAKIVOBackup&Replication10.10-快速高效能的备份解决方案"#1DataProtectionforSMBs,EnterprisesandMSPs"请访问原文链接:https://sysin.org/blog/nakivo-backup-10/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgNAKIVOBackup&Replication10Fast......
  • 每日总结10.10
    今天的学习经验非常丰富。上午,我参加了算法与数据结构以及马克思主义原理的课程。在算法与数据结构方面,我们探讨了一些常见的数据结构和算法,这对编程和问题解决能力非常有帮助。而在马克思主义原理方面,我深入了解了社会和政治理论,这将有助于我更好地理解社会和历史背景。下午,我继......
  • 10.10 b站经验增长
    小蒲非常喜欢刷b站,天天都去刷,作为2017年才加入b站的萌新,白嫖了好多年,积攒了上千的硬币,以至于他现在才5级,于是他想要快速积攒经验,众所周知,每天b站会给登录用户1枚硬币,1枚硬币的经验值为10经验值,每天最多可以投5枚硬币获得经验值,也就是每一天可以通过投币最多获得50经验,他想要以最快......
  • 10.10
    数据库还是没连上在500和404之间反复横条,最后发现web.xml里没写东西的问题所以没法调用servletj解决之后以为完事了,因为输入错误信息都能报出是错的,发现输入正确的在数据库看不到,因为导包的mysql包不太对,还有导入的包放错位置了,现在解决了已经提交了 ......
  • 2023.10.10 js.Array和js.String
    1定义数组21.vararr=newArray{1,2,3,4...};32.vararr=[1,2,3,4];4访问5arr[索引]=值67同一数组的类型可变,长度可变。89Array中的属性和方法10arr.length//获取数组长度11forEach()遍历数组中的每个有值的元素,并调用一次传入的函数12arr......
  • 10.10随笔
    →信条部分早起晚睡2/88,+0举止厚重13/360,,+1穴位按摩4/30,+1每日反省1/90,+0→学习部分[√]单词1872/2251仅余14天[√]跑步78/80km仅余1天→项目进度科一已过,周四开始准备科二。首先记录一首歌:郭源潮,不全能懂,但很有感觉,风月难舍,离合不骚。以前也听过这首歌,但......
  • 大二打卡(10.10)
    今天做了什么:数据结构,今天是稍微复习二叉树,然后学了二叉树的代码实现,以及二叉树的遍历,马原,矛盾统一,乱七八糟,感觉好多概念都很相似,但都有很奇怪的点是不同的,哲学真复杂,白话文小说,今天知道了西游记的发展变化和开篇西行起因,有意思,还跟朱棣有关系今天遇到了什么问题:建民老师的测试......
  • 10.10
    晚上上批判性思维,学习了论证的思路,要弄清主题,找到支撑的主要理由,次要理由,论证的过程是什么,论证的结构,有无反例,证实还是证伪,你怎么认为?也学习了图尔敏模型并留了作业让我们运用模型分析文章进行实际操作。题外:每个人身上都有每个人的可利用资源,应该开阔视野,灵活运用,多发现探索他们......
  • 10.10总结
    今天的大部分时间依然放在了备战软考上面学习时间4小时今天主要学习了下午第一道题数据流图的解法。练了四道题。其次学习了上午题的知识产权、数据库和面向对象设计的部分,刷了一百道选择题左右。......
  • 10.10
    今天绝对超常发挥,运气爆表7.50发题8.09切A三分板子8.30切B二分+KMP,板子9.20想到了C的n3做法,跟正解非常接近,但是还差一点,大概写了写,跑路10.00切D双指针+线段树10.50想到C的正解,开写10.50~11.47写完+写挂,心态爆炸,结束前三分钟极限调完应得分数400=100+100+100+10......