精华内容
下载资源
问答
  • 20),已按从大到小顺序存放数组中,输入一数,要求用折半查找法找出该数是数组中的第几元素的值。如果不数组中输出0。要求: 编写两函数input和binbearch分别实现数组数据的输入和元素的查找。Input第...

    Problem B: C语言习题 折半查找


    Description

    有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
    要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。

    Input

    第一行数组元素的个数n
    第二行n个数组元素的值
    第三行要查找的值

    Output

    查找的值在数组中的位置

    Sample Input

    10
    10 9 8 7 6 5 4 3 2 1
    5

    Sample Output

    6

    #include<stdio.h>
    void input(int a[99],int n);
    int binsearch(int a[99],int n,int value);
    int main()
    {
        int a[20],n=0,value;
        int position;
        scanf("%d",&n);
        input(a,n);
        scanf("%d",&value);
        position =binsearch(a,n,value);
        printf("%d",position);
        return 0;
    }
    void input(int a[99],int n)
    {
        int i,j;
        for(i=0;i<n;i++)
        {
            scanf("%d",&a[i]);
        }
    }
    int binsearch(int a[99],int n,int value)
    {
        int f=0,l=n-1,m,o=1;
        while(f<=l)
        {
            m=(f+l)/2;
            if(a[m]==value)
            {
                return m+1;
                o=0;
            }
            if(a[m]>value)
            {
                f=m+1;
            }
            else
            {
                l=m-1;
            }
            //printf("%d\n",m);
        }
        return 0;
    }

     no words to say 

     just see code!

    展开全文
  • Problem A: C语言习题 折半查找Time Limit: 1 Sec Memory Limit: 128 ...20),已按从大到小顺序存放数组中,输入一数,要求用折半查找法找出该数是数组中的第几元素的值。如果不数组中输出0。要...
    

    Problem A: C语言习题 折半查找

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 3306  Solved: 1441
    [Submit][Status][Web Board]

    Description

    有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
    要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。

    Input

    第一行数组元素的个数n
    第二行n个数组元素的值
    第三行要查找的值

    Output

    查找的值在数组中的位置

    Sample Input

    10
    10 9 8 7 6 5 4 3 2 1
    5

    Sample Output

    6

    HINT

    主函数已给定如下,提交时不需要包含下述主函数

    /* C代码 */

    int main()

    {

        int a[20],n=0,value;

        int position;

        scanf("%d",&n);

        input(a,n);

        scanf("%d",&value);

        position =binsearch(a,n,value);

        printf("%d",position);

        return 0;

    }


    /* C++代码 */

    int main()

    {

        int a[20],n=0,value;

        int position;

        cin>>n;

        input(a,n);

        cin>>value;

        position =binsearch(a,n,value);

        cout<<position;

        return 0;

    }

    #include <iostream>
    
    using namespace std;
    
    void input(int a[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            cin>>a[i];
        }
    }
    int binsearch(int a[],int n,int value)//传递过来的a[]是从大到小排列的
    {
        int mid;
        int low=0,high=n-1;
        if(value>a[low]||value<a[high])
        {
            return 0;
        }
        while(low<=high)
        {
            mid=(low+high)/2;
            if(a[mid]==value)
            {
                return mid+1;//下表是mid,如果要输出位置的话要+1
            }
            if(a[mid]<value)
            {
                high=mid-1;
            }
            if(a[mid]>value)
            {
                low=mid+1;
            }
        }
        return 0;
    }
    
    int main()
    {
        int a[20],n=0,value;
        int position;
        cin>>n;
        input(a,n);
        cin>>value;
        position =binsearch(a,n,value);
        cout<<position;
        return 0;
    }
    


    展开全文
  • YTU 2413 C语言习题折半查找

    千次阅读 2019-04-08 12:12:41
    =1000000),这n个数已按从大到小顺序存放一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数数组中第一次出现的位置。如果不数组中输出0。 输入 第一行数组元素的个数n 第二行n个数组...

    上天折断了你飞翔的羽翼,你也要给自己一双翅膀!

    题目描述

    有n个数(n<=1000000),这n个数已按从大到小顺序存放在一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数在数组中第一次出现的位置。如果不在数组中输出0。 

    输入

    第一行数组元素的个数n

    第二行n个数组元素的值 
    第三行输入查询次数T (T<=100000)

    往下有T行,每行输入一个需要查询的数字

    输出

    查找的值在数组中的位置 

    样例输入

    copy

    10
    10 9 8 7 6 5 4 3 2 1
    2
    9
    5

    样例输出

    2
    6

    提示

    注意:数组空间为1000000和100000

    #include<stdio.h>
    int hanshu(int n, int v);
    int a[1000100];
    int main()
    {
        int v,n;
        int p,i,t;
        scanf("%d",&n);
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
    scanf("%d",&t);
        while(t--)
    {
           
        scanf("%d",&v);
        p=hanshu(n,v);
        printf("%d\n",p);
                }
        return 0;
    }
    int hanshu(int n, int v)
    {
        int top=n-1,bot=0,b[n+5],c=0,num=0,i,mid;
        while(top>=bot)
        {
            mid=(top+bot)/2;
            if(v==a[mid])
            {
             b[num]=mid+1;
            num++;
            c=1;
            top=mid-1;
            }
            if(v>a[mid])
                top=mid-1;
            if(v<a[mid])
                bot=mid+1;
        }
        if(c)
        {
        c=n;
        for(i=0;i<num;i++)
        {
            if(b[i]<c)
            {
                c=b[i];
            }
        }
        }
        return c;
    }

     

    展开全文
  • oj2413:C语言习题 折半查找

    千次阅读 2017-04-26 16:50:49
    问题描述:有n个数(n 要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。...问题描述:有n个数(n),已按从大到小顺序存放一个数组中,输入一个数,要求用折半查找法找出该数是
    问题描述:有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
    要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。
    作者:何知令
    完成时间:2017年4月26日
    输入:第一行数组元素的个数n
    第二行n个数组元素的值
    第三行要查找的值

    输出:查找的值在数组中的位置

    代码:

    /*
    问题描述:有n个数(n<20),已按从大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中的第几个元素的值。如果不在数组中输出0。
    要求: 编写两个函数input和binbearch分别实现数组数据的输入和元素的查找。
    作者:何知令
    完成时间:2017年4月26日
    输入:第一行数组元素的个数n
    第二行n个数组元素的值
    第三行要查找的值
    输出:查找的值在数组中的位置
    */
    #include <stdio.h>
    #include <stdlib.h>
    void input(int a[],int n)
    {
        int i;
        for(i=0;i<n;i++)
            scanf("%d",&a[i]);
    }
    int binsearch(int a[], int n,int value)
    {
        int first=0,end=n,mid;
        mid=(first+end)/2;
        while(1)
        {
            if(a[0]<value||a[n-1]>value)
                return 0;
            if(a[mid]>value)
                first=mid;
            else if(a[mid]==value)
                return mid+1;
            else
                end=mid;
        }
    }
    int main()
    {
        int a[20],n=0,value;
        int position;
        scanf("%d",&n);
        input(a,n);
        scanf("%d",&value);
        position =binsearch(a,n,value);
        printf("%d",position);
        return 0;
    }
    
    程序运行结果展示:

    知识点总结:函数,二分查找

    学习心得:简单的

    展开全文
  • C语言:有N个数从小到大的顺序存放一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个数。如果不数组中,打印“not found”。
  • =1000000),这n个数已按从大到小顺序存放一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数数组中第一次出现的位置。如果不数组中输出0。 输入 第一行数组元素的个数n 第二...
  • 有15数按由大到小顺序存放数组中,输入一数,要求用折半查找法找出该数是数组中第几元素的值。如果该数不数组中,则输出“无此数”。以下是此题的【c源代码】,需要【c++源代码】请点击进入#include #...
  • c语言二分查找

    2019-01-02 13:33:29
     折半查找法也称为二分查找法,它充分利用了元素间的次序关系,采用分治策略,可最坏的情况下O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2...
  • 1、有序的顺序表可以查找效率较高的折半查找法,其平均查找长度为log2(n+1)-1。 2、无序的顺序表只能进行顺序查找,其平均查找长度为(n+1)/2。 3、建造树表(无论是二叉排序树或B-树)的过程本身就是一排序...
  • 习 9 解答 判断题 1用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度 答 FALSE (错链表表示的有序表不能用折半查找法 ) 2. 有 n 数据放在一维数组 A[1.n] 中进行顺序查找时这 n 数的排列有 序或...
  • 习题 9解答 判断题 1用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度 答 FALSE错(链表表示的有序表不能用折半查找法 ) 2.有 n 数据放在一维数组 A[1.n]中进行顺序查找时这 n 数的排列有序或...
  • PAGE PAGE 7 习题9解答 判断题 1用向量和单链表表示的有序表均可使用折半查找方法来提高查找速度 答FALSE (错链表表示的有序表不能用折半查找法) 2.有n个数据放在一维数组A[1.n]中进行顺序查找时这n个数的排列有序...
  • 有15数存放数组中,输入一数要求用折半查找法找出该数是数组中的第几元素的值,如果该数不数组中,则输出无此数,要找的数用scanf函数输入。 源代码: #include"stdio.h" #include"math...
  • 小型成绩管理系统: #include #include #define N 40 int Readscore(int score[],long id[]);...还有,为什么折半查找法用不了?就是输进去学号之后程序不继续往下执行。 我实在找不出错哪了。
  • C语言中,设计函数:search(),用折半查找法在已排序的n个数种查找指定的数据,若存在,返回其所处的位置,否则,将其插入适当位置使数据仍有序。 这个程序我已经写完了前半段,但是后半段的那个插入其中使其保持...
  • 有15数按由大到小顺序存放数组中,输入一数,要求用折半查找法找出该数是数组中第几元素的值。如果该数不数组中,则输出"无此数"。 代码如下: #include #define N 15 int main(){ int i,...
  • 8.顺序表(6,15,30,37,65,68,70,72,89,99)中采用折半查找法查找元素37,与表中进行过比较的元素依次是 。 9.若已知n个关键字值具有相同的散列函数值,并且采用线性探测再散列法处理冲突,那么,将这n个关键字值...
  • YTU oj2413

    2019-09-18 18:40:02
    折半查找法,元素第一次出现的位置。 2413: C语言习题 折半...=1000000),这n个数已按从大到小顺序存放一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数数组中第一次出现的位置。如果不...
  • 3.4.3 递归的折半查找算法 3.5 贪心算法思想 3.5.1 基本概念 3.5.2 最优装船问题 3.6 回溯 3.6.1 基本概念 3.6.2 四皇后问题求解 3.7 数值概率算法 3.7.1 基本概念 3.7.2 计算定积分 第2部分 编程实例解析 第4章 ...
  • =1000000),这n个数已按从大到小顺序存放一个数组中,然后有T次查询,每次输入一个数,要求用折半查找法找出该数数组中第一次出现的位置。如果不数组中输出0。 输入 第一行数组元素的个数n 第二行n个数组...
  • (2)折半查找 (Serch_Bin) (3)插值查找 (Search_Ins) (4)斐波那契查找 (Search_Fib) (5)次优查找树(BiTree_SOSTree) 11. 动态查找 (1)二叉排序树上进行查找(bstsrch)、插入结点(ins_bstree)和删除...
  • C语言通用范例开发金典.part2.rar

    热门讨论 2012-08-31 14:18:18
    范例1-8 查找矩阵的马鞍点 19 ∷相关函数:Get_Saddle函数 1.1.9 对角矩阵建立 21 范例1-9 对角矩阵建立 21 ∷相关函数:Store函数 1.1.10 三对角矩阵的建立 22 范例1-10 三对角矩阵的建立 22 ∷相关函数:...
  • C语言通用范例开发金典.part1.rar

    热门讨论 2012-08-31 14:09:26
    范例1-8 查找矩阵的马鞍点 19 ∷相关函数:Get_Saddle函数 1.1.9 对角矩阵建立 21 范例1-9 对角矩阵建立 21 ∷相关函数:Store函数 1.1.10 三对角矩阵的建立 22 范例1-10 三对角矩阵的建立 22 ∷相关函数:...
  • 输入一数,要求用折半查找法找出该数是数组中第几元素的值。如果该数不数组中,输出“不表中”。 39 7.10有一篇文章,共有3行文字,每行有80字符。要求分别统计出其中英文大写字母,小写字母,数字,空格...
  • 数据结构实验

    2012-04-13 09:55:47
    编写程序构造一有序表La,从键盘接收一关键字key,二分查找法在La 中查找key,若找到则提示查找成功并输出key所在的位置,否则提示没有找到信息。 2.编写程序实现Hash表的建立、删除、插入以及查找操作。 ...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    内容及步骤: 1、 设有一个线性表(e0,e1,e2,e3,…,en-2,en-1)存放一个一维数组A[arraySize]中的前n个数组元素位置。请编写一个函数将这个线性表原地逆置,即将数组的前n个原地址内容置换为(en-1,en-2,…,e3,...
  • 大话数据结构

    2018-12-14 16:02:18
    随着n值越来越大,它们时间效率上的差异也就越来越大。好比有些人每天都学习,而另一些人,打打游戏、睡睡大觉,毕业后前者名企争着要,后者求职处处无门。 2.7.1事后统计方法 24 2.7.2事前分析估算方法 25 ...
  • 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与字符串 5.1 简介 5.2 指针变量的声明与初始化 5.3 指针...
  • 4.8 查找数组:线性查找与折半查找 4.9 多下标数组 4.10 有关对象的思考:确定类的行为 小结 术语 自测练习 自测练习答案 练习 递归练习 第5章 指针与字符串 5.1 简介 5.2 指针变量的声明与初始化 5.3 指针...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

c语言用折半查找法在n个

c语言 订阅