顺序结构数据类型的定义
#define MAXSIZE 10
typedef struct
{
int key;
//...列表中的其他信息
}Record;
typedef struct
{
int length;
Record data[MAXSIZE + 1]; //data[0]为工作单元,存放待查找的数据,防止下标访问过界
}RecordList;
顺序查找
算法思想:在表的一端设置一个称为“监视哨”的附加单元,存放要查找元素的关键字。从表的另一端开始查找,如果在“监视哨”找到要查找元素的关键字,返回失败信息,否则返回相应下标。
性能分析:假设列表长度为n,那么查找到第i个数据元素时需进行n-i+1次比较。
ASL = 1/n∑(n-i+1) = (n+1)/2
折半查找
算法思想:首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
重复以上步骤,直到找到满足条件的结果为止,若找不到,则返回失败。
要求:
1.必须采用顺