栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

6-7(附加) 二分查找 (15 分)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

6-7(附加) 二分查找 (15 分)

先赞后看,是好习惯

本题要求实现一个函数,该函数采用二分查找法从一个已经升序排序的数组中,查找某个数k。如果找到k, 输出k所在的数组下标(0~n-1)及比较次数。若k不存在,输出-1和比较次数。

函数接口定义:
int Search(int *p, int n, int k,int *Count);
void Sort(int *,int n);

其中 p为数组首地址,n为数组长度,k为待查找的数, *Count为比较次数。

函数返回值:如果k在数组中返回其下标值,没找到返回-1。

裁判测试程序样例:
#include
#define N 20
int Search(int *pa, int n, int k,int *p);
int main()
{
     int a[N],n,cmp,*p=&cmp;
     int pos,num=0;
     int i,k;
     scanf("%d",&n);
     for(i=0;i 

输入样例1:

在这里给出一组输入。例如:

5
13 25 36 57 79
25

结尾无空行

输出样例1:

在这里给出相应的输出。例如:

1
3

结尾无空行

输入样例2:

在这里给出一组输入。例如:

5
13 25 36 57 79
10

结尾无空行

输出样例2:

在这里给出相应的输出。例如:

-1
2

结尾无空行

话不多说,直接上代码!!!

int Search(int *p, int n, int k,int *Count)
    //p.a数据数组,n个数,k待查找元素,*Count次数
{

    int low=0;
    *Count =0;
    int high=n-1;
    int mid ;
    while (low<=high)
    {
      
        mid=(low+high)/2;
        if(p[mid]>k)
        {
            high=mid-1;
            *Count=*Count+1;
        }
        else if(p[mid]==k)
        {
            *Count=*Count+1;
            break;
        }
        else if(p[mid] 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/655747.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号