
查找
数据结构与算法 --- 查找
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
【经典算法实现 48】找出一个数组中分别为奇数个的数
先来说下题目: 一个数组中存在两个数a和ba 和 ba和b,且a、ba、ba、b中个数一个为偶数一个为奇数,请使用两种方法分别找出它们。 方法一: 找奇数个的数。 思路: 利用 a^a=0公式,直接把所有的数都异或一遍,最后留下来的就是奇数个的数。 int find_odd_num(int *arr) { int result = 0, *p = arr; while(p != NULL){ result = result ^ *p; p++; } return result; } .原创 2021-02-10 12:58:37 · 704 阅读 · 0 评论 -
【经典算法实现 21】Bloom过滤器 C代码实现
【经典算法实现 21】Bloom过滤器 C代码实现一、完整代码二、运行结果 本文主要是使用 C语言来实现一个简单的Bloom过滤器算法, 有关Bloom Filter的原理请参考《Bloom过滤器》 一、完整代码 #include <stdio.h> #include <stdlib.h> #include <stdarg.h> // 可变参数 #define MAX_BIT 100 // 定义 Bloom 数组的 bit 数 #define CHAR_BI原创 2020-08-19 14:41:49 · 609 阅读 · 0 评论 -
Bloom过滤器
Bloom过滤器一、提出一个问题1.1 Bloom过滤器数据结构二、Bloom过滤器的相关问题2.1 为什么Bloom过滤器不能100%确定元素在数据集中呢?2.2 Bloom过滤器能否有删除元素的操作2.3 误报率的计算三、Bloom过滤器的应用 一、提出一个问题 在我们细述Bloom过滤器之前,我们先抛出一个问题: 给你一个巨大的数据集(百万级、亿级…),怎么判断一个元素是否在此数据集中?或者怎么判断一个元素不在此数据集中? 思考这个问题的时候,最先想到的可能是哈希表,在数据集规模较小的时候,这个方法转载 2020-08-18 16:07:32 · 477 阅读 · 0 评论 -
【经典算法实现 17】C语言 Hash 表代码实现
在前面《哈希表原理》中, 我们学习到,hash 表其实就是通过 hash函数将输入的数据进行转换成一个相对唯一的 index, 然后将数据存在 index 号的数组中,如果发现冲突,则继续往后存储。 由于hash 函数的存在,我们查找数据时,可以很快的得到它的index, 理论上它的时间复杂度是O(1),最坏的情况为O(n),也就 是所有数据都冲突。 现在我们用代码来实现一下,实现 Hash 表的增删改查,代码如下(相关注释写在代码中了): #include <stdio.h> #include原创 2020-08-14 14:37:44 · 742 阅读 · 0 评论 -
哈希表原理
哈希表原理1. Hash函数2. 处理冲突的几种方法2.1 外部拉链法2.2 开放定址法2.3 公共溢出区2.4 再Hash法3. 实现哈希表的操作方法 哈希表是最常用的数据结构之一,对于其用法,大家都非常熟悉,这里详细探讨一下其原理。 哈希表的底层实际上是基于数组来存储的, 当插入键值对时,并不是直接插入该数组中,而是通过对键进行Hash运算得到Hash值,然后和数组容量取模,得到在数组中的位置后再插入。 取值时,先对指定的键求Hash值,再和容量取模得到底层数组中对应的位置,如果指定的键值与存贮的键转载 2020-08-14 11:14:36 · 587 阅读 · 0 评论 -
【数据结构与算法 2】(单循环链表)快慢指针实现查找单循环链表中间数据
本文是在《【数据结构与算法 1】(单链表)快慢指针实现查找单链表中间数据》 的基础上,由单链表修改为单循环链表,修改点不多,执行结果如下: 代码如下,对应的修改点也标注出来了,详细如下: // 单链表实现方式 // 利用快慢指针,查找单链表的中间节点 #include <stdio.h> #include <string.h> #include <ctype.h> #include <malloc.h> // 定义单链表结构体,并构建结构对象 L原创 2020-07-05 10:57:05 · 2922 阅读 · 0 评论 -
【数据结构与算法 1】(单链表)快慢指针实现查找单链表中间数据
本程序为单链表程序实现,包含 创建链表 查看链表 链表长度 插入元素 删除指定元素 中间节点数据(能完这快慢指针) 删除链表 运行示例如下: 程序代码如下: // 单链表实现方式 // 利用快慢指针,查找单链表的中间节点 #include <stdio.h> #include <string.h> #include <ctype.h> #include <malloc.h> // 定义单链表结构体,并构建结构对象 ListNode 和 指向原创 2020-07-04 19:33:57 · 3021 阅读 · 0 评论