//二分法查找数据
int lookfor(int *a,int n,int key)
{
int low,hight,mid;
low=1;
hight=n;
while(low<=hight)
{
mid=(low+hight)/2
{
if(key>a[mid])//进行位置一半的转换,现在查找的位置是右半部分
{
low=mid+1;
}
else if(key<a[mid])//进行位置一半的转换,现在查找的位置是左半部分
{
hight=mid-1;
}
else
return mid;//这是相等才进行执行的条件
}
}
return 0;
}
//顺序查表
int look(int *a,int n,int key)
{
int i;
for(i=0;i<n;i++)
{
if(a[i]==i)
{
return i;
}
}
return 0;
}
//顺序查表法的优化
int lookfor(int *a,int n;int t)
{
int i;
a[0]=key;
i=n;
while(a[i]!=key)
{
i--;
}
return i;
}
//对二分法进行优化的算法,插值查找法
int lookfor(int *a,int n,int key )
{
int mid,low,hight;
low=1;hight=n;
while(low<=hight)
{
mid=low+(hight-low)*(key-a[low])/(a[hight]-a[low]);
if(key<a[mid])
{
hight=mid-1;
}
else if(key>mid)
{
low=mid+1;
}
else
return 0;
}
}
。。。。。