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 閱讀(220)
評論(0) 編輯 收藏 引用 所屬分類:
算法與數據結構