静态查找:
- 分为顺序查找和折半查找。(或线性查找和二分查找)。
- 一个数据项或记录的数据结构:
typedef struct {
KeyType key;
...
}DataItem;
一、顺序查找
(一)、定义
- Sequential Search,函数命名:sequentialSearch;
- 顺序查找:可用在顺序储存结构 ( 顺序表 ) 和线性链表结构 ( 链表 ) 中。
- 顺序查找表的0号单元留空 : 性能好一倍。
- 平均查找长度:
- 3 / 4 ( n + 1 ) 3/4(n+1) 3/4(n+1)
(二)、原理
- 从表中最后一个数据项开始,从后往前。
- 比较表中数据项的关键字与给定的关键字。
- 若到第一个数据项都匹配不成功,则查找失败。
(三)、算法
- 把给定的 key 赋值给 0号单元。——“哨兵”
- 从最后一个往前。
- 找不到时,返回0(0号单元位置)。
(四)、代码
public String sequentialSearch(int key) {
searchTable[0].key = key;
int i;
for (i = length - 1; searchTable[i].key != key; i--)
;
return searchTable[i].value;
}
二、折半查找
(一)、定义
- Binary Search,函数命名:binarySearch;
- 三个位置:low, mid, high
- 平均查找长度:
- l o g 二 为 底 , n + 1 为 指 , 再 减 一 log二为底,n+1为指,再减一 log二为底,n+1为指,再减一
- 具体原理看代码。
(二)、代码