
小朋友学数据结构
海天一树
信息学奥赛研究。
展开
-
小朋友学数据结构(5):顺序查找法
查找是最常见的数据操作之一,也是数据结构的核心运算之一,其重要性不言而喻。 顺序查找是最简单的查找策略,对于小规模的数据,顺序查找是个不错的选择。(一)基本思想从数据的第一个元素开始,依次比较,直到找到目标数据或查找失败。 1 从表中的第一个元素开始,依次与关键字比较。 2 若某个元素匹配关键字,则查找成功。 3 若查找到最后一个元素还未匹配关键字,则查找失败。(二...原创 2018-05-09 17:39:26 · 473 阅读 · 0 评论 -
小朋友学数据结构1:链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。一、链表的创建操作刚开始,链表为空。咱们需要创建一个头节点。头节点可以用来存储节点数据,也可以不存储节点数据。咱们这里以不存储数据...原创 2019-04-06 10:46:47 · 673 阅读 · 0 评论 -
小朋友学数据结构-10大排序算法(2):直接插入排序
一、基本思想在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。举例:数组a[] = {57, 68, 59, 52}。比较方法是每个数与前面的数比较。第一个57,前面没有数,不用比较。第二个数68,与前面的57比较,因为68 > 57,所以不用换位置。第三...原创 2018-12-10 16:47:15 · 734 阅读 · 0 评论 -
小朋友学十大排序算法(1):冒泡排序
一、基本原理(由小到大)将相邻两个数比较,将大的调到后头。如果有n个数,则要进行n-1趟比较。在第1趟中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。上图中有5个数,要进行5 - 1 = 4趟比较。第1趟,要进行n - 1 = 4次两两比较;第2趟,要进行5 - 2 = 3次两两比较;第3趟,要进行5 - 3 = 2次两两比较;第4趟,要进行5 - 4 = 1次两两...原创 2018-12-06 23:51:09 · 926 阅读 · 0 评论 -
小朋友学数据结构(16):基于邻接矩阵的的深度优先遍历和广度优先遍历
观察下面两个无向图:这两个图其实是一样的,只是画法不同罢了。第一张图更有立体感,第二张图更有层次感,并且把A点置为顶点(事实上图的任何一点都可以做为顶点)。一、用数组来存放顶点vexs[0] = ‘A’vexs[1] = ‘B’vexs[2] = ‘C’vexs[3] = ‘D’vexs[4] = ‘E’vexs[5] = ‘F’vexs[6] = ‘G’vexs[7] = ...原创 2018-10-08 20:57:01 · 1701 阅读 · 0 评论 -
小朋友学数据结构(14):线性索引查找
在大话数据结构的第311页,有这么一句: 最佳的情况就是分的块数m与块中的记录数t相同,此时意味着n = m * t = t2, ASL = 1/2(n/t + t) + 1 = t + 1 = sqrt(n) + 1这句话怎么理解呢?先看一个高中数学的基本公式: 在上面的数学公式中,令a = n/t, b = t,则有 了解小朋友学编程请加QQ307591841(微...原创 2018-09-13 08:33:41 · 246 阅读 · 0 评论 -
小朋友学数据结构(13):斐波契那查找
《大话数据结构》第八章8.4节介绍了斐波契那查找。斐波那契查找的理解难点就一个:为什么需要把数组长度扩充到f[k]-1而不是f[k]或者f[k+1]? 这是为了能正确递归计算mid值,看下图可发现 f[k]-1 = (f[k-1] + f[k-2]) - 1 = (f[k-1]-1) + 1 + (f[k-2]-1),中间的1就是我们二分的锚点mid,如果目标在左区,数组长度就缩到(f[k-...原创 2018-09-11 18:56:04 · 340 阅读 · 0 评论 -
小朋友学数据结构(6):折半查找法
折半查找法又称为二分查找法。(一)基本思想假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,此时查找成功;或直到子表不存在为止,此时查找不成功。(二)时间复杂度...原创 2018-05-09 17:41:08 · 6543 阅读 · 0 评论 -
小朋友学数据结构:哈希表
Hash表也称散列表,也有直接译作哈希表,Hash表是一种特殊的数据结构,它同数组、链表以及二叉排序树等相比较有很明显的区别,它能够快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。这个源于Hash表设计的特殊性,它采用了函数映射的思想将记录的存储位置与记录的关键字关联起来,从而能够很快速地进行查找。零、Hash表的设计思想 对于一般的线性表,比如链表,如果要存储联系人信原创 2017-08-16 22:18:41 · 1576 阅读 · 0 评论