关于二分查找 二叉树 二叉排序树 平衡二叉树 b树 b+树 mysql索引 字典树的开放思考(整理后)

本文深入探讨了二分查找的原理和应用,包括解决一个数组右移查找问题的二分查找方法。接着介绍了二叉树的不同类型,如完全二叉树、满二叉树和平衡二叉树,并展示了如何在二叉树中寻找特定路径。此外,文章还讨论了平衡二叉搜索树(如AVL树)的重要性,以及B树和B+树在数据库索引中的优势。最后,提到了MySQL的索引机制,包括聚簇索引和非聚簇索引,并对比了字典树与二叉排序树的性能特点。
摘要由CSDN通过智能技术生成
    to meimei,

         二分查找是常见的一种查找方式,即:对有序的序列,每次查找先比较中间位置mid=(left+right)/2是否为所找元素
    ,是则结束查找,否则分别遍历左右半边序列,直至找到目标。

    时间复杂度为O(lgn)。

         做过的一个笔试题:

         2015去哪儿春季笔试题

         一个递增数组如【1,2,3,4,5】可以右移 例如【3,4,5,1,2】

    请设计一个函数int indexofArray(int []array, int target),如果target在数字中返回数组下标否则返回-1
         思路:
         一般思路为顺序找到交界处位置k,需要O(lgn),然后对k,k+1,n,1,...k-1进行二分查找,稍微变换下坐标即可。
         我的思路为先用二分查找找到交界处,代码如下:

    private static int fun(int[] a,int i,int j) {
            if(a==null || a.length==0||i<0||j>=a.length){
                return -1;
            }
            int half = (i+j)/2;
            while(i<=j){
                half = (i+j)/2;
                if(a[half]<a[half+1]){
                    int m = fun(a,i,half-1);
                    int n = fun(a,half+1,j);
                    return m>0?m:n>0?n:-1;
                }else{
                    return half;//返回有序序列的最大值位置
                }
                
            }
            return -1;
        }
    再根据返回值,进行下一步的二分查找。


    ================================================
    二叉树有以下分类

    完全二叉树、满二叉树、平衡二叉树
    (1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排
    布,这就是
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值