查找是数据处理经常进行的操作。这里我介绍常见的几种,主要有静态查找,动态查找,哈希查找。
静态查找有:二分查找,顺序查找,插值查找 ,斐波那契查找。
动态查找:主要针对二叉树。
哈希查找 :主要理解哈希查找的思想 。
第一种:二分查找 。
在一个查找区,确定中心位置后,用待查找的值与中心值比较,前者大,就把查找区锁定到后半段,反之,锁定在前半段。这样的过程一直进行,知道查找区边界结束 。
有序顺序表的二分查找程序如下 :
//二分查找
#include<stdio.h>
int binsearch(int *ListSeq,int ListLength,int KeyData)
{
int low = 0;
int mid;
int high = ListLength - 1;
while(low <= high)
{
mid = (low + high)/2;
if(KeyData < ListSeq[mid])
high = mid -1;
else if(KeyData > ListSeq[mid])
low = mid + 1;
else
return mid;
}
return -1;
}
第二种:顺序查找
顺序查找:顾名思义就是,从第一个开始逐个把查找区的值与待查值比较,知道后边界结束。
程序如下:
//顺序查找
#include<stdio.h>
int FindSeq(int *ListSeq,int ListLength,int KeyData)
{
int i;
for(i = 0;i < ListLength,i++)
{
if(ListSeq[i] == KeyData)
return i;
}
return 0;
}
int main()
{
int a[5] = {34,35,26,89,56