查找:
-
静态查找:只查找某个特定的元素是否在表中,或查找它的属性。(就是通常所说的查找)
-
动态查找:在查找表中插入,删除一个元素,对表进行操作。
顺序表的查找
- 一般的查找:从头到尾的遍历查找
int Find(Sqlist L,int key){//平均查找长度为(n+1)/2
int i;
L.date[0]=key;//设置监视哨
for(i=L.length;L.date[i]!=key;i--);//从后往前比较
return i;
}
- 二分查找(折半查找)
int Search_Bin(Sqlist L,int key){//平均查找长度为Log2(n+1)-1
//只适用于有序的顺序表
int low=1;
int high=L.length;
while(low<=high){
int mid=(low+high)/2;
if(L.date[mid]==key)
return mid;
if(L.date[mid]<key)
low=mid+1;
if(L.date[mid]>key)
high=mid-1;
}
return 0;
}
- 索引查找