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 阅读(209)
评论(0) 编辑 收藏 引用 所属分类:
算法与数据结构