`
hellojyj
  • 浏览: 61731 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

2/3的二分检索

 
阅读更多
/**
    将数组分成1/3和2/3大小不等的两部分的二分检索算法
    <==算法复杂度分析=====

        最坏情况(可以利用判定树来求):(2/3)^time = n , time = O(log2/3 n);
        最好情况:O(1);
    ======================>
*/

#include<cstdio>
#define NOTFOUND 555555555

//二分检索都需要排好序的数组
int sortedArr[] = {5,7,9,10,11,12,18,22,28};

int myBinary_search(int arr[],int s,int t,int target);

int main()
{
    //输入你要检索的目标值
    int target;
    printf("please input the target you want to find:\n");
    scanf("%d",&target);

    //开始检索并且返回结果
    int index = myBinary_search(sortedArr,0,8,target);

    //根据检索结果来打印内容
    if(index != NOTFOUND){
         printf("The index of the target number in the array is %d\n",index);
    }else{
        printf("The target is not in the array\n");
    }
    return 0;

}

//  这是一个自定义的二分检索函数
//  arr   表示待检索的数组
//  s     表示检索开始位置
//  t     表示检索结束位置
int myBinary_search(int arr[],int s,int t,int target){
    while(s<t){
         //三分之二处
        int m = (t-s)/3*2+s;
        if(arr[m] == target)
            return m;
        else if(arr[m] < target)
            s = m + 1;
        else
            t = m - 1;
    }
    return NOTFOUND;
}

 

分享到:
评论

相关推荐

    最优二分检索树构造及绘制

    3. **插入功能**:向树中插入新节点,保持二分检索树的性质。 4. **检索功能**:基于二分查找原理,从树中查找特定键值的节点,返回查找结果。 5. **绘图功能**:使用图形界面库(如Turboc 2.0中的控件)展示树的...

    算法设计与分析二分检索

    二分检索,也称为折半查找,是一种在有序数组中高效寻找特定元素的搜索算法。它的基本思想是将数组分成两半,通过比较中间元素与目标值,不断缩小搜索范围,直到找到目标元素或者确定其不存在。这个过程遵循了分治...

    最优二分检索树的实现

    2. **函数`getTree`**:此函数用于根据`R`数组构建出最优二分检索树的具体结构,并存储在一个名为`tree`的数组中。 3. **主函数`main`**:这里定义了关键字出现的概率`P`和非关键字(失败路径)出现的概率`Q`,并...

    用动态规划法构造最优二分检索树

    最优二分检索树(Optimal Binary Search Tree, OBST)是一种特殊的二叉树,它的设计目标是在满足二叉查找树性质的同时,使得平均查找效率最高。这种树在数据检索、数据库索引等领域有着广泛的应用。在给定一组键值...

    算法设计与分析实验_二分检索的递归实现

    本实验重点探讨了二分检索(又称二分查找)的递归实现,这是一种在有序数组中寻找特定元素的有效方法。在此,我们将深入探讨二分检索的基本概念,递归的原理以及如何在C++中实现这一算法。 二分检索的核心思想是在...

    关于二分检索的实验过程及编程

    关于二分检索的实验过程及编程关于二分检索的实验过程及编程关于二分检索的实验过程及编程关于二分检索的实验过程及编程

    最小成本二分检索树_OBST

    最小成本二分检索树(Optimal Binary Search Tree, OBST)是一种特殊类型的二叉搜索树,它的设计目标是在保持搜索效率的同时,最小化查询的总成本。在OBST中,每个节点代表一个关键字,成功检索一个关键字的成本是P...

    单源点最短路径 最优二分检索树 程序实现

    在计算机科学领域,单源点最短路径问题和最优二分检索树是两个重要的算法概念,它们在数据结构和图论中占据着核心地位。本文将深入探讨这两个算法的原理、实现及其应用。 首先,我们来看单源点最短路径(Single ...

    4.4 二分检索1

    这是【部分内容】中提到的第3个知识点,即对无序列表进行二分检索前,需要先进行排序。一旦列表排序完成,就可以开始二分检索。 第4个知识点指出,对于列表lst=[12,27,38,149,2356,89777],如果目标值存在于列表中...

    网络监控系统报价表.xls

    硬盘热插拔/1个HDMI、1个VGA、1个CVBS非同源输出/8路1080P解码/2个千兆网口/3个USB2.0/Smart 2.0/N+1热备/ANR/智能检索/浓缩播放/车牌检索/人脸检索/热度图/客流量统计/视频摘要回放/分时段回放/超高倍速回放,1,台,...

    二分检索源代码及输出

    二分检索,也称为二分查找,是一种在有序数组中高效地查找特定元素的算法。它的基本思想是通过不断地将待查找的区间减半来快速定位目标值。在这个给定的源代码中,二分检索的实现是通过`BinarySearch`函数完成的。 ...

    C# 二分检索 源代码

    C# 二分检索 源代码 迭代实现 cs源代码

    实验2 二分检索的递归与迭代算法设计&#40;报告&#41;.doc

    二分检索的递归与迭代算法设计 二分检索是计算机科学中一种常用的搜索算法,这种算法可以在有序数组中快速地查找某个元素。二分检索算法可以分为递归算法和迭代算法两种。递归算法是一种top-down的算法,通过将问题...

    二分检索递归实现1

    二分检索,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。它的基本思想是将数组分成两半,每次比较中间元素与目标值,根据比较结果决定是在左半部分还是右半部分继续查找,直到找到目标元素或者搜索...

    快排与二分检索递归与非递归

    快速排序(Quick Sort)与二分查找(Binary Search)是计算机科学中两种极其重要的算法,它们在处理大量数据时有着高效的表现。这两种算法都涉及到递归和非递归的实现方式,各有优缺点。下面我们将深入探讨这两个...

    华科计算机学院算法实验报告-二分检索树

    二分检索树是一种特殊的二叉树,其每个节点的左子树中的所有节点值都小于当前节点,右子树中的所有节点值都大于当前节点,且对于任何节点,其左子树和右子树都是二分检索树。这种数据结构在查找、插入和删除操作上...

    C# 二分检索 源码

    C# 二分检索 递归实现 cs源代码

    实验2 二分检索的递归与迭代算法设计.doc

    2. 熟悉不同存储表示下求解二分检索问题的递归算法设计。 3. 通过实例转换,掌握将递归算法转换成迭代算法的方法。 4. 掌握应用递归或迭代程序设计实现分治法求解问题的抽象控制策略。 二、实验内容: 1. 认真阅读...

    计算计算法_二分检索

    大学本科计算机算法要求程序,C语言编写,二分检索算法

    算法实验货郎担、二分检索的源代码

    在这个"算法实验货郎担、二分检索的源代码"压缩包中,包含了两个关键算法的实现:货郎担问题(Travelling Salesman Problem, TSP)和二分检索(Binary Search)。这两个算法在实际应用中都有着广泛的应用。 货郎担...

Global site tag (gtag.js) - Google Analytics