标题:这个用二分查找怎么做(已迷一个多小时了)
取消只看楼主
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
结帖率:69.23%
已结贴  问题点数:4 回复次数:2 
这个用二分查找怎么做(已迷一个多小时了)
#include<stdio.h>
int main()
/*{
    int array[10];
    int low,high,mid,target;
    scanf("%d",&target);
    while(low<=high)
        {
            int mid=(low+high)/2;
            if(array[mid]>target)
                high=mid-1;
            else if(array[mid]<target)
            low=mid+1;
            else
                return mid;
        }
    return-1;
}*/
{
   
    int a[10];
    int i,n,mid,x,low,high;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&x);
    low=1;
    high=n;
    while(low<=high)
{
mid=(high+low)/2;
if(a[mid]>x)
high=mid-1;
else if(a[mid]<x)
low=mid+1;
else
return mid;
}
return x;
}







/*for(i=1;i<=n;++i)
{
mid=(1+n)/2;
    if(x>a[mid])
    a[1]=a[mid+1];
    else if(x<a[mid])
    a[n]=a[mid-1];
   
    if(x==a[mid])
    {
   
    printf("%d",mid);
    break;
    }
}
return x;

}*/
搜索更多相关主题的帖子: target return include 
2016-12-15 14:12
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
得分:0 
回复 2楼 rjsp
ok

刚学习小半年   ,   努力成为专家
2016-12-15 14:55
天衣boy
Rank: 1
来 自:中国河南
等 级:新手上路
帖 子:99
专家分:0
注 册:2016-10-20
得分:0 
回复 楼主 天衣boy
调用函数的会了,但是不调用函数就不会了   你能写一下不调用函数的么
#include <stdio.h>
int search(int arr[],int len,int num)//arr为序列,len为序列长度,num为要查找的数
{
    int start,end,mid;
    start=0;
    end=len-1;
    mid=(start+end)/2;
    while(start<=end)
    {
        if(arr[mid]>num)
        {
            end=mid-1;
            mid=(start+end)/2;
            continue;
        }
        if(arr[mid]<num)
        {
            start=mid+1;
            mid=(start+end)/2;
            continue;
        }
        return mid+1;
    }
    return -1;
}

int main()
{
    int a[100],i,m,num,pos;
    printf("输入序列长度:");
    scanf("%d",&m);
    printf("输入一个长度为%d的有序序列:\n",m);
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    printf("输入你要查找的数:");
    scanf("%d",&num);
    pos=search(a,m,num);
    if(pos==-1)
        printf("未能在序列中找到你要查找的数。\n");
    else
        printf("你要查找的数在第%d个位置\n",pos);
    return 0;
}

刚学习小半年   ,   努力成为专家
2016-12-15 15:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472441-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.286572 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved