数据结构和算法------查找

来源:互联网 发布:java将信息写入文件 编辑:程序博客网 时间:2024/05/16 12:02

1.顺序查找

数组是用连续地址存储元素数据的,a为指针,表示一块连续的地址,所以可以当数组地址来用,n为数组的个数即数组长度,key为存在a地址的数

i为查到key的相对于a起始地址的位置

int search(int *a, int n, int key)

{
int i;
for(i = 0; i < n; i++)
{
if(a[i] == key)
{
return i;
}
}
return -1;
}

//有设置哨兵的顺序查找
int search2(int *a, int n, int key)
{
int i = n;
a[0] = key;//设置哨兵
while(a[i] != key)
{
--i;
}
return i;

}


3.二分法查找

int search3(int *a, int n, int key)
{
int low = 1;
int high = n;
int mid;
while(low <= high)
{
mid = (low + high)/2;
if(key < a[mid])
{
high = mid - 1;
}
else if (key > a[mid])
{
low = mid + 1;
}
else
{
return mid;
}
}
return 0;
}

4.插值二分查找

int search3(int *a, int n, int key)
{
int low = 1;
int high = n;
int mid;
while(low <= high)
{
mid = low + (high-low)(key-a[low])/(a[high]-a[low]);
if(key < a[mid])
{
high = mid - 1;
}
else if (key > a[mid])
{
low = mid + 1;
}
else
{
return mid;
}
}
return 0;
}







0 0
原创粉丝点击