第九章查找 9.1静态查找表 9.2动态查找表 9.3哈希表
第九章 查 找 9.1 静态查找表 9.2 动态查找表 9.3 哈希表
何谓查找表? 查找表是由同一类型的数据元素(或记录)构成的集 合。 由于“集合”中的数据元素之间存在着松散的关系, 因此查找表是一种应用灵便的结构。 对查找表经常进行的操作: 1)查询某个“特定的”数据元素是否在查找表中; 2)检索某个“特定的”数据元素的各种属性; 3)在查找表中插入一个数据元素: 4)从查找表中删去某个数据元素
查找表是由同一类型的数据元素(或记录)构成的集 合。 由于“集合”中的数据元素之间存在着松散的关系, 因此查找表是一种应用灵便的结构。 何谓查找表? 对查找表经常进行的操作: 1)查询某个“特定的”数据元素是否在查找表中; 2)检索某个“特定的”数据元素的各种属性; 3)在查找表中插入一个数据元素; 4)从查找表中删去某个数据元素
查找表可分为两类: 静态查找表 仅作查询和检索操作的查找表。 。动态查找表 有时在查询之后,还需要将“查询”结果为 “不在查找表中”的数据元素插入到查找表中; 或者从查找表中删除其“查询”结果为“在查找 表中”的数据元素
仅作查询和检索操作的查找表。 静态查找表 有时在查询之后,还需要将“查询”结果为 “不在查找表中”的数据元素插入到查找表中; 或者从查找表中删除其“查询”结果为“在查找 表中”的数据元素。 动态查找表 查找表可分为两类:
查找 根据给定的某个值,在查找表中确定一个其关键字等 于给定值的数据元素或(记录)。 若查找表中存在这样一个记录,则称“查找成功”。 查找结果给出整个记录的信息,或指示该记录在查找 表中的位置; 否则称“查找不成功”。查找结果给出“空记录” 或“空指针
根据给定的某个值,在查找表中确定一个其关键字等 于给定值的数据元素或(记录)。 若查找表中存在这样一个记录,则称“查找成功”。 查找结果给出整个记录的信息,或指示该记录在查找 表中的位置; 否则称“查找不成功”。查找结果给出“空记录” 或“空指针”。 查 找
关键字 是数据元素(或记录)中某个数据项的值,用以 标识(识别)一个数据元素(或记录)。 若此关键字可以识别唯一的一个记录,则称之 谓“主关键字”。 若此关键字能识别若干记录,则称之谓“次 关键字
是数据元素(或记录)中某个数据项的值,用以 标识(识别)一个数据元素(或记录)。 若此关键字可以识别唯一的一个记录,则称之 谓“主关键字”。 若此关键字能识别若干记录,则称之谓“次 关键字”。 关 键 字
如何进行查找? 查找的方法取决于查找表的结构。 由于查找表中的数据元素之间不存在明显的组织 规律,因此不便于查找。 为了提高查找的效率,需要把查找表中的元素之 间人为地附加某种确定的关系,换句话说,用另外 一种结构来表示查找表。 静态查找表、动态查找表
由于查找表中的数据元素之间不存在明显的组织 规律,因此不便于查找。 为了提高查找的效率, 需要把查找表中的元素之 间人为地 附加某种确定的关系,换句话说, 用另外 一种结构来表示查找表。 查找的方法取决于查找表的结构。 如何进行查找? 静态查找表、动态查找表
关键字类型和数据元素类型 ·关键字类型 typedef float KeyType;I实型 typedef int Key下ype;Il整型 typedef char*Key下ype;l字符串型 。 数据元素类型 typedef struct{ KeyType key; }ElemType;
关键字类型和数据元素类型 • 关键字类型 typedef float KeyType; //实型 typedef int KeyType; //整型 typedef char *KeyType; //字符串型 • 数据元素类型 typedef struct{ KeyType key; … }ElemType;
两个关键字的比较如下宏定义: ∥-对数值型关键字 #define EQ(a,b)((a)==(b)) #define LT(a,b)((a)<(b)) #define LQ(a,b)((a)<=(b))
两个关键字的比较如下宏定义: //--对数值型关键字 #define EQ(a,b) ((a)==(b)) #define LT(a,b) ((a)<(b)) #define LQ(a,b) ((a)<=(b)) …
两个关键字的比较如下宏定义: ∥-对字符串型关键字 #define EQ(a,b)(!strcmp((a),(b))) #define LT(a,b)(strcmp((a),(b))<0) #define LQ(a,b)(strcmp((a),(b))<=0)
两个关键字的比较如下宏定义: //--对字符串型关键字 #define EQ(a,b) (!strcmp((a),(b))) #define LT(a,b) (strcmp((a),(b))<0) #define LQ(a,b) (strcmp((a),(b))<=0) …
·9.1.1顺序查找 一查找过程:从表的一端开始逐个进行记录的关键 字和给定值的比较 一算法描述 找64 例01 2 3 x 5 6 7 89 1011 645 13 19 2137 56 64 75 8088 92 0 监视哨) 比较次数: 比较次数=5 查找第n个元素:1 查找第n-1个元素:2 查找第1个元素: n 查找第个元素: n+1-i 查找失败: n+1
• 9.1.1 顺序查找 – 查找过程:从表的一端开始逐个进行记录的关键 字和给定值的比较 – 算法描述 i 例 0 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 找64 64 监视哨 i i i i 比较次数: 比较次数=5 查找第n个元素: 1 查找第n-1个元素:2 ………. 查找第1个元素: n 查找第i个元素: n+1-i 查找失败: n+1