查找知识点思维导图
查找代码实现
顺序查找
typedef struct{ //查找表的存储结构
ElemType *elem; //元素存储基址,建表时按实际长度分配,0号单元留空,放哨兵
int TableLen; //表长
}SSTable;
int Search_Seq(SSTable ST,ElemType key){
ST.elem[0]=key; //待查找的元素即为哨兵
for(i=ST.TableLen;ST.elem[i]!=key;--i); //从后往前查找
return i; //若表中没有key,则返回i=0;若有key则返回i
}
折半查找
折半查找仅适用于有序(递增或递减)的顺序表
int Binary_Search(SeqList L,ElemType key){
int low = 0,high = L.TableLen-1,mid;
while(low<high){
mid = (low+high)/2; //折半取中间值
if(L.elem[mid]==key)
return mid; //中间值等于待查找元素,返回所在位置
else if(L.elem[mid]>key)
high = mid-1; //中间值大于待查找元素,则说明待查找元素在表的前半部分,继续查找
else
low = mid+1; //中间值小于待查找元素,则说明待查找元素在表的后半部分,继续查找
}
return -1; //查找失败
}
合集:
数据结构之线性表
数据结构之栈与队列
数据结构之串
数据结构之树与二叉树
数据结构之图
数据结构之查找
数据结构之排序