- 3
- 0
- 约1.32万字
- 约 91页
- 2022-05-24 发布于北京
- 举报
第8章 查找算法;8.1 查找的基本概念;(2)查找表指由具有同一类型(属性)的数据元素组成的集合。
静态查找表只允许进行查找,不能改变表中的数据元素。
动态查找表不仅可以实现查找,还允许向表中插入或删除数据元素。
(3)查找是指在查找表中查找键值与待查元素值相等的过程。
(4)平均查找长度是指查找过程中对键需要执行的平均比较次数,是一个查找算法优劣的衡量标准。
对n个对象记录进行查找时,平均查找长度为:
;8.2 静态查找表;顺序表类的定义如下:
算法8.2:顺序表类的定义
class Sqtable{
private:
datanode r[MAXSIZE]; //数组,查找表
int n; //数据元素个数,表长
public:
Sqtable();
void create();
void output();
void sq_search(KeyType k); //顺序查找
void binary_search(KeyType k); //折半查找
};
;8.2.1 顺序表的查找;已知表r,关键字数据K,表长n:
算法8.3:顺序查找算法
void Sqtable::sq_search(KeyType K){
r[n].key=K; //设置监视哨
int i=0;
while(r[i].key!=K) i++;
if(in)cout\n 查找成功,该记录对应的下标为:iendl;
else cout\n 查找失败!\nendl;
}
;顺序表的性能分析:;对顺序表的查找有如下三种改进策略:
① 每次成功查找将被查元素移动到查找表的表头;
② 每次成功查找将被查元素向前移动一个位置;
③ 给每个元素增加一个频率域,每次成功查找时,更新该元素的频率并且移动元素的位置,以保持查找表中的元素按频率从大到小存储。
;8.2.2 折半查找;【例8.1】已知一个有11个数据元素的有序表(关键字即为数据元素的值):(04,15,20,27,39,46,59,61,78,82,95),以折半查找方法查找关键字为27和86的数据元素。
其中:方括号表示当前的查找区间,“↑”指向中间、下界和上界位置。
;(1)如查找给定值key=27的元素;(2)如查找给定值key=86;算法8.4:折半查找的非递归算法
void Sqtable:: binary_search(KeyType K){
int mid,low,high,find;
low=0;high=n-1;find=0;
do{
mid=(low+high)/2;
if(K==r[mid].key){
cout\n查找成功,该记录对应的下标为:midendl;
find=1;
} else if(Kr[mid].key) high=mid-1;
else low=mid+1;
}while(find==0low=high);
if(find==0) cout查找失败!\nendl;
}
;算法8.5:折半查找的递归算法
static int binsearch( int rec[], int k, int low, int high){
if ( low high ) return –1;
int mid = (low + high) / 2;
if ( k == rec[mid] ) return mid;
else if ( k rec[mid] ) binsearch(rec, k, low, mid-1);
else binsearch(rec, k, mid+1, high);
}
;折半查找算法的复杂度分析:
折半查找可描述为二叉树的形式,称为折半查找判定树。设待查区间为[low..high],则折半查找判定树递归定义如下:
(1)如果lowhigh,则折半查找判定树为空。
(2)如果low=high,则折半查找判定树的根为mid=(low+high)/2,左子树的查找区间为[low..mid-1],右子树的查找区间为[mid+1..high]。
;?;查找的优点与缺点:;8.3 散列表;8.3.1 哈希函数的常用构建方法;直接定址法
哈希函数Hash(key)=a*key+b,其中a和b都为常数。
直接定址法取关键字的某个线性函数值为哈希地址。
此类哈希函数计算方法最简单,是一对一的映射,一般不会产生冲突。但是,直接定址法要求所得的哈希地址空间的大小与关键字集合的大小相同。如果关键字的集合很大时,哈希地址空间不可能取到那么大。
直接定址法适用于关
您可能关注的文档
- 第七章营养与健康茶.pptx
- 公共管理第四讲组织与人事.pptx
- 930前文件名师导学第3讲代词.pptx
- 放射修饰效应-放射治疗学基础研究生课程.pptx
- 成果微机原理1.pptx
- 河北邢台市2025-2026学年高二上学期2月期末语文试题(含解析).docx
- 河北邢台市2025-2026学年高一上学期2月期末物理试题(含解析).docx
- 第3课《安塞腰鼓》教学设计 2025-2026学年统编版语文八年级下册.docx
- 第1课《社戏》教学设计 2025-2026学年统编版语文八年级下册.docx
- 第2课《回延安》教学设计 2025-2026学年统编版语文八年级下册.docx
- 河北盐山中学等校2025-2026学年上学期高三一模化学试卷(含解析).docx
- 河北正定中学2025-2026学年高一上学期期末考试物理试卷(含解析).docx
- 河北张家口市怀安县2025-2026学年第一学期期末教学综合评价八年级地理试卷(含解析).docx
- 河南安阳市殷都区2025-2026学年第一学期期末教学质量检测七年级地理试卷(含解析).docx
- 河南安阳市滑县2025一2026学年第一学期期末学业质量监测八年级地理试题(含解析).docx
- 河南安阳市林州市2025-2026学年上学期期末考试高一政治试题(含解析).docx
- 河南焦作市武陟县第一中学2025-2026学年高一上学期1月月考语文试卷(含解析).docx
- 河南济源市2025-2026学年上学期期末学业质量调研七年级历史试卷(含解析).docx
- PICC导管并发症的紧急处理与护理.pptx
- 河南鹤壁市2025-2026学年高二上学期期末考试生物试题(含解析).docx
原创力文档

文档评论(0)