数据结构-查找

查找的对象是由一组记录组成的表或文件,而每个记录则由若干个数据项组成,并假设每个记录都有一个能唯一标识该记录的关键字

在这种条件下,查找的定义是:给定一个值k,在含有n个记录的表中找出关键字等于k的记录。

有两种查找结果:

线性表的查找

线性表上常见的查找方法有:

查找与数据的存储结构有关,线性表有顺序链式两种存储结构

被查找的顺序表元素类型定义如下:

typedef int KeyType;    // 关键字的数据类型typedef struct{    KeyType key;    InfoType data;      // 其他数据, 可选} RecType;

顺序查找

顺序查找是一种最简单的查找方法。它的基本思路是:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k相比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。

// 顺序查找int seqSearch(RecType R[], int n, KeyType k){    int i = 0;    // 从表头往后找    while (i < n && R[i].key != k) i++;    if (i >= n) return 0;    else return i + 1;}

顺序查找的优点为算法简单且适用面广,缺点为查找效率相对较低。

二分查找