2023年5月11日

摘要: 本次实验包括用C语言分别实现开放地址法的哈希表与链地址法的哈希表,对实现的哈希表进行大量的随即插入后随机查找已经插入的数据,然后计算出平均查找长度. 首先是开放地址法的闭散列: 只要是插入就先考虑扩容,因为哈希表的特殊性表的容量变大时,里面的数据也要重新分布,所以这里直接新开了一个哈希表调用已经实现 阅读全文

posted @ 2023-05-11 22:43 玄灵镜 阅读(51) 评论(0) 推荐(0)


2023年5月10日

摘要: 二叉树的实现包括二叉树的构建,和二叉树的前中后序便利,二叉树的层序非递归遍历,求二叉树的总结点,求二叉树的最大深度和求二叉树的最大宽度, 因为实验主要是对二叉树的各个属性数据测量,所以这里手动链接了一颗二叉树.随后用调用函数接口传参二叉树的根节点测量二叉树的属性. 递归遍历很容易: 接下来是非递归: 阅读全文

posted @ 2023-05-10 22:07 玄灵镜 阅读(22) 评论(0) 推荐(0)

摘要: 首先分别声明链表和顺序表的结构单位, 1:插入实现:顺序表插入比较简单,直接访问下表找到插入位置,然后移动所有后面的数据将插入的位置空出来,然后将需要插入的数据插入, 链表的插入:因为一般链表都是调用头插或者尾插,但是为了和顺序表相比较,再插入的时候增加了随机位置插入,所以在插入函数里设计了一个计数 阅读全文

posted @ 2023-05-10 21:39 玄灵镜 阅读(42) 评论(0) 推荐(0)


2023年5月8日

摘要: 现在大多主流计算机的内存差不多在16个g左右,然而互联网的用户体量很大数据动不动就是用亿来计算的,对这些数据进行查找或者从中提取一些有用的信息,若能用一般的数据结构比如哈希或者树形结构需要占据很大的内存,按一个整形4字节那么40一个整形需要占用近15g左右空间,比如提出一个问题:如何在40亿个整形中 阅读全文

posted @ 2023-05-08 10:47 玄灵镜 阅读(43) 评论(0) 推荐(0)


2023年5月4日

摘要: 起处较为流行的数据储存方式为树形结构,再加上红黑树等优秀数据结构的发展,直到今天二叉平衡搜索树也经常被应用在各种方面,但是c++库里面还有两个与map/set很像的容器unorderedmap,他们的调用与普通的map几乎一样,有着非常优秀的查找时间复杂度,只是不能像二叉树哪样层序遍历得到顺序的排序 阅读全文

posted @ 2023-05-04 23:29 玄灵镜 阅读(113) 评论(0) 推荐(0)


2023年4月27日

摘要: 关于map和set的实现先看库里面是怎样的. 库里面的map和set的底层都是一个叫做_Tree的封装类来完成的.下图中可以看到,map和set中的迭代器也基本上用的是_tree里面实现的迭代器. 这与之前学的栈与队列很像,栈与队列是将一个线性容器封装起来,通过调用线性容器自身的函数,实现栈和队列的 阅读全文

posted @ 2023-04-27 15:46 玄灵镜 阅读(48) 评论(0) 推荐(0)


2023年4月25日

摘要: 继搜索二叉树和AVL树后有了红黑树。 AVL树改善了搜索二叉树在极端情况下的严重效率退化,但是在运用得过程中发现他对平衡的要求几乎达到了苛刻的地步,往往经过一系列复杂的变化只是将树的深度优化了一点点,而这一点点在现在日益快速的处理器下根本不起眼,于是有了更优的结构红黑树: 红黑树有以下几条规则: 1 阅读全文

posted @ 2023-04-25 22:39 玄灵镜 阅读(21) 评论(0) 推荐(0)


2023年4月23日

摘要: 在计算机的使用中查找是个很重要的算法,但是一般的简单查找算法效率都不高,其中比较显著的方法是二分查找,但是二分查找的局限性很大,他只能在有序的数组中进行查找,所以想要用二分查找就必须先要对查找的数据进行排序,但是排序的时间复杂度又是一个问题。所以就提出了用树形的储存方式去存放数据排序和查找。 二叉搜 阅读全文

posted @ 2023-04-23 23:29 玄灵镜 阅读(44) 评论(0) 推荐(0)


2023年4月20日

摘要: 快速排序相比其他极大排序在效率和空间复杂度上都算是比较优得。并且在进行了三数取中优化以后,除了及其小的情况外,基本能保持logn的时间复杂度。 三数取中法;在一堆数据中随机取三个数,然后取其中间大小的数。 有了三数取中的基础以后,快速排序的key就可以用三数取中来完成了。 1:快速排序有三种常用的方 阅读全文

posted @ 2023-04-20 22:45 玄灵镜 阅读(601) 评论(0) 推荐(0)

摘要: 冒泡排序是相邻两个数不断比较在升序中将大的数不断移向后面。 首先要有数组的大小和需要排序的数组。 1:可以先将数组的最后一位设为end,while循环中不断对end自减,当end为零时表示数组中已经没有要排序的了。 2:内循环中不断将较大的数移向后面,循环中不断自增的i应该小于end;且安排i的前一 阅读全文

posted @ 2023-04-20 15:12 玄灵镜 阅读(57) 评论(0) 推荐(0)


博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3