C/C++_查找算法_查找的定义

查找的定义

查找 又称检索或查询,是指在查找表中找出满足一定条件的结点或记录对应的操作。

查找表 在计算机中,是指被查找的数据对象是由一类型的记录构成的集合, 如顺序表、链表、二叉树和哈希表等

查找效率 查找算法中基本运算是通过记录的关键字与给定值进行比较,所以查找的效率通常取决于比较所花的时间,而时间取决于比较的次数。通常以关键字与给定值进行比较的记录个数的平均值来计算。

查找操作及分类

操作
1、查找某个“特定的”数据元素是否存在在查找表中
2、某个“特定的”数据元素的各种属性
3、在查找表中插入一个数据元素
4、从查找表中删除某个数据元素

分类
若对查找表进行(1)或(2)两种操作,则称此类查找表为静态查找表

若在查找过程中同时插入查找表中存在的数据元素, 或者从查找表中删除以存在的某个数据元素,则称此类查找为动态查找表

数组和索引

日常生活中,我们经常会在电话号码簿中查阅“某人”的电话号码, 按姓查询或者按字母排序查询;在字典查阅 “某个词” 的读者和含义等等。这里,“电话号码簿”和“字典”都可看作一张查找表,而按“性”或者“字母”查询则是按索引查询!

在这里插入图片描述
索引把线性表分成若干块,每一块中的元素存储顺序是任意的,但是块与块间必须按关键字大小按循序排序。即前一块中最大关键字值小于后一块中最小关键字值。

分块以后,为了快速定义块,还需要建立一个索引表,索引表中的一项对应线性表中的一块,索引项由键域和链域组成。键域存放相应关键字的键值,链域存放指向本块第一个节点和最后一个节点的指针,索引表按关键字由小到大的顺序排列!

数组是特殊的块索引(一个块一个元素):
在这里插入图片描述
哈希表是非常经典的块索引!
在这里插入图片描述
分块查找的算法分两步,首先确定所查找的节点属于哪一块,即在索引表中查找其所在的块,然后在块内查找待查询的数据。由于索引表是递增有序的,可采用二分法查找,而块内元素是无序的,只能采用顺序查找。(块内元素较少,则不会对执行速度有太大的影响)

结语:

学到的知识要, 多复习, 多总结, 多敲. 需要时间的积累, 才能引起质的改变. 自己写不出来的永远是别人的.

分享一下我的技巧: 代数法把具体的数字带进去, 看看能能能找到规律(掌握思想).
还有就是画图, 也很重要. 用笔画出来, 把数代进去, 方法虽然笨, 但真的很实用, 好记忆不如烂笔头!!! 还有多用debug(调试工具)

我是小白, C/C++功力…, 你懂得, 写的文章可能不是很好. 如果存在问题, 欢迎大神给予评判指正.
错了不可怕, 可怕的是找不出bug, 谁没错过!!!

最近学操作系统我认为, 学什么都要成本(时间), 即使它是免费的, 我个人认为要挑来学, 挑重点来学, 而不是从头到尾, 除非考试考研.

这个知识点我没有完全掌握, 就是会了也要复习, 革命尚未成功, 同志还需努力!!! , 我会回来反复复习的

今日是: 2020年5月18日, (由于疫情的原因)现在没有返校. 写博客,也可自己加强记忆,就当写写日记吧!!!

希望给个赞: 反正你又不亏, 顺便而已

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章