注:这一章很重要,具体的书上都有写
折半查找很重要。
二叉查找树,平衡二叉树,红黑树这三个树形查找的区别,看到树的重要性了吧
红黑树是22年加入新大纲的,考研越来越贴近实用了
散列表特别重要,特别是对于自命题的院校。
第七章 查找
7.1 顺序查找和折半查找
顺序查找
typedef struct{ //查找表的数据结构
ElemType *elem; //元素存储空间基址,建表时按实际长度分配,0号单元留空
int TableLen; //表的长度
}SSTable;
int Search_Seq(SSTable ST,ElemType key){
//在顺序表ST中顺序查找关键字为key的元素。若找到则返回该元素在表中的位置
ST.elem[0]=key; //“哨兵”
for (i=ST.TableLen;ST.elem[i]!=key; --i){ //从后往前找
}
return i; //若表中不存在关键字为key的元素,将查找到i为0时退出for循环
}
折半查找
int Binary_Search(SeqList L, ElemType key) {
//在有序表L中查找关键字为key的元素,若存在则分会其位置,不存在返回-1
int low = 0, high = L.length - 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;
}