心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
bsearch()功能:在有序数组a的[begin,end)区间中查找数字x,如果找不到,返回0;
low_search()功能:在有序数组a的[begin,end)区间中插入一个数字x,x尽量向前插入,返回x应该插入的位置;
high_search()功能:在有序数组a的[begin,end)区间中插入一个数字x,x尽量向后插入,返回x应该插入的位置。
以下是我的代码:
#include<stdio.h>
long bsearch(long *a,long begin,long end,long x)
{
//  [begin,end)
    long mid;
    
while(begin<end)
    {
       mid
=(begin+end)/2;
       
if(a[mid]==x) return mid;
       
else if(a[mid]>x) end=mid;
       
else begin=mid+1;
    }
    
return 0;
}
long low_search(long *a,long begin,long end,long x)
{
    
long mid;
    
while(begin<end)
    {
       mid
=(begin+end)/2;
       
if(a[mid]>=x) end=mid;
       
else begin=mid+1;
    }
    
return begin;
}
long high_search(long *a,long begin,long end,long x)
{
    
long mid;
    
while(begin<end)
    {
       mid
=(begin+end)/2;
       
if(a[mid]<=x) begin=mid+1;
       
else end=mid;
    }
    
return begin;
}
int main()
{
    
//*
    freopen("data.in","r",stdin);
    freopen(
"data.out","w",stdout);
    
//*/
    const long maxn=108;
    
long n=0,a[maxn];
    
while(scanf("%ld",&a[n+1])==1) n++;
    
return 0;
}


posted on 2010-01-10 14:05 lee1r 阅读(201) 评论(0)  编辑 收藏 引用 所属分类: 算法与数据结构

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理