首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C语言函数二分查找(折半查找)

C语言函数二分查找(折半查找) 参考视频讲解哔哩哔哩比特鹏哥的视频 ——链接 二分查找 #include //二分查找 //在一个有序数组中查找具体的某个数 //如果找到了返回...//查找了一次范围就缩小了一半,这样的速度是比较快的 //这就叫二分查找(折半查找) //那么怎么找到中间元素的下标呢 //原来的数组是1 2 3 4 5 6 7 8 9 10 //他们的下标是...//左右下标又可以求出一个平均值是7,又找到一个对应的元素是8 //所以这一组查找范围的中间元素是8 //用8再跟我要找的元素比一下,比我找的元素要大 //说明我要查找的元素在8的左边 //这时候要查找的范围被再次的缩小成了...//一直找到左右下标无法确定新的范围,他们之间没有元素可以被查找的时候,结束,说明没有找到 //如果在某一次查找的时候,找到了,下标相等了,说明找到了,把下标给过来 int number_search...//在这里要进行很多次 //每一次二分查找的第一步是找被查找范围的中间元素的下标 while (left <= right) { int mid = (right + left

84820

查找三 哈希查找

注:哈希查找与线性查找和树查找最大的区别在于,不用数值比较。 冲突 若 key1 ≠ key2 ,而 f(key1) = f(key2),这种情况称为冲突(Collision)。...构造哈希这个场景就像汽车找停车位,如果车位被人占了,只能找空的地方停。 ? 构造哈希 由以上内容可知,哈希查找本身其实不费吹灰之力,问题的关键在于如何构造哈希和处理冲突。...当程序查找哈希时,如果没有在第一个对应的哈希表项中找到符合查找要求的数据元素,程序就会继续往后查找,直到找到一个符合查找要求的数据元素,或者遇到一个空的表项。...(2)拉链法 将哈希值相同的数据元素存放在一个链表中,在查找哈希的过程中,当查找到这个链表时,必须采用线性查找方法。...,直接返回NULLKEY     } } (4)插入关键字为key的记录 将待插入的关键字key插入哈希 先调用查找算法,若在中找到待插入的关键字,则插入失败; 若在中找到一个开放地址,则将待插入的结点插入到其中

1.4K50

C语言——S顺序专题

数据结构总结: 1)能够存储数据(如顺序、链表等结构); 2)存储的数据能够⽅便查找。...一、顺序的概念及结构 线性 线性(linearlist)是n个具有相同特性的数据元素的有限序列。线性是⼀种在实际中⼴泛使⽤的数据结构,常⻅的线性:顺序、链表、栈、队列、字符串......1、静态顺序:使用定长数组存储元素 静态顺序缺陷:空间给少了不够⽤,给多了造成空间浪费 2、动态顺序:按需申请 3、动态顺序的实现 #define INIT_CAPACITY 4 typedef...>size - 1; i++) { ps->arr[i] = ps->arr[i + 1];//ps->arr[i-2] = ps->arr[i-1]; } ps->size--; } 七、查找...//在顺序查找X int SLFind(sL* ps, sLDataType x) { for (int i = 0; i size; i++) { if (ps->arr[

5710

9.3 动态查找

01二叉排序树和平衡二叉树 1、二叉排序树及其查找过程 二叉排序树或者是一棵空树,或者是具有以下性质: (1)若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值。...2、二叉排序树的插入和删除 (1)和次优二叉树相对,二叉排序树是一种动态树。其特点是,树点的结构通常不是一次生成的,而是在查找过程中,当树中不存在关键字等于给定值的结点时再进行插入。...2、在B-树上进行查找包含两种基本操作: (1)在B-树中找结点。 (2)在结点中找关键字。...03 键树 1、键树又称数字查找树(Digital Search Trees)。它是一棵度>=2的树,树中的每个结点中不是包含一个或几个关键字,而是只含有组成关键字的符号。...C语言 | 打印菱形 更多案例可以go公众号:C语言入门到精通

5422120

查找——线性

查找的基本概念 查找:由同一类型的数据元素(或记录)构成的集合 静态查找查找的同时对查找不做修改操作(如插入和删除) 动态查找查找的同时对查找具有修改操作 关键字:记录中某个数据项的值,可用来识别一个记录...:记录的个数 pi:查找第i个记录的概率 ( 通常认为pi =1/n ) ci:找到第i个记录所需的比较次数 线性查找 --- 顺序查找 应用范围:顺序或线性链表表示的静态查找表表内元素之间无序...查找概率相等时,ASL相同; 查找概率不等时,如果从前向后查找,则按查找概率由大到小排列的有序其ASL要比无序ASL小 --- 折半查找 若k==Rmid.key,查找成功 若k<Rmid.key,...[在这里插入图片描述] 分块查找过程 - 对索引使用折半查找法(因为索引是有序) - 确定了待查关键字所在的子表后,在子表内采用顺序查找法(因为各子表内部是无序 分块查找性能分析 查找效率...缺点:要增加一个索引的存储空间并对初始索引进行排序运算。 适用情况:如果线性既要快速查找又经常动态变化,则可采用分块查找

500105

查找一 线性查找

查找算法的分类 若在查找的同时对表记录做修改操作(如插入和删除),则相应的称之为动态查找; 否则,称之为静态查找。...选取查找算法的因素 (1) 使用什么数据存储结构(如线性、树形等)。 (2) 中的次序,即对无序还是有序进行查找。 顺序查找 要点 它是一种最简单的查找算法,效率也很低下。...分块查找由于只要求索引是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。 存储结构 分块查找是由“分块有序”的线性和索引两部分构成的。...下图就是一个分块查找的存储结构示意图 ? 基本思想 分块查找算法有两个处理步骤: (1) 首先查找索引 因为分块查找是“分块有序”的,所以我们可以通过索引来锁定关键字所在的区间。...(2) 从适用性而言,顺序查找无限制条件,二分查找仅适用于有序,分块查找要求“分块有序”。 (3) 从存储结构而言,顺序查找和分块查找既可用于顺序也可用于链表;而二分查找只适用于顺序

91960
领券