数据结构—查找(顺序查找和折半查找)
1、顺序查找的查找表的数据结构
typedef struct{Elemtype *elem;int TableLen; //表的长度
}SeqList;
2、顺序查找的主要代码
//一般线性表的顺序查找
int Search_Seq(SSTable ST,ElemType key)
{ST.elem[0]=key; //0号元素放关键字,哨兵for(int i=ST.TableLen;ST.elem[i]!=key;i--){return i;} }
其时间复杂度为O(n);其对于顺序表和链表都适用。
3、折半查找的查找表的数据结构
typedef struct{Elemtype *elem;int TableLen; //表的长度
}SSTable;
4、折半查找的主要代码(对于升序的顺序表)
//折半查找
int Binary_Search(SeqList L,ElemType key)
{int low=0,high=L.TableLen-1,mid;while(low<=high){mid=(low+high)/2; //取中间位置if(L.elem[mid]==key) //查找成功 return mid;else if(L.elem[mid]<key) //在右半边查找 {low=mid+1;} else //在左半边查找 high=mid-1;}return -1;
}
其时间复杂度为O(logn);但是其只能对于有序的顺序表,因为链表不具备随机存储的特性。折半查找的过程是一棵平衡二叉树。
如果当前Low和high之间的元素个数是奇数个,则左右两边元素个数相等,否则就是左半部分比右半部分少一个元素(针对于mid=(low+high)/2,也即是向下取整时,若向上取整,则相反)。
数据结构—查找(顺序查找和折半查找)相关推荐
- java折半查找(正常的折半查找)
1 import java.util.Scanner; 2 3 /** 4 * @author Administrator 折半查找 5 */ 6 public class zhebansousuo ...
- 斐波那契查找(Fibonacci Search)和折半查找
两个查找算法都是针对有序数组进行查找,不同点在于分界点的取值不同. 算法介绍 折半查找很简单,每次与当前区间的中点进行比较,然后决定查找前一部分还是后一部分. Fibonacci查找利用了Fibona ...
- c语言折半查找法例题6,折半查找法--C语言谭浩强版练习6.9
不多说,直接上图. 本程序来源于百度百科――折半查找法 #include #include int main(void) { int arrayA[15]={2, 4, 5, 7, 8, 10, 12 ...
- c语言折半查找法找字符,折半查找法(C语言)
折半查找法(C语言) #include #define max 20 int binary(int x,int list[],int n) /*从list[]中查找x*/ ...
- 408数据结构学习笔记——顺序查找、折半查找、分块查找
目录 1.顺序查找 1.1.顺序查找的概念 1.2.顺序查找的代码 1.3.顺序查找的查找效率 1.4.顺序查找的优化 1.5.顺序表的时间复杂度 2.折半查找 2.1.折半查找的概念 2.2.折半查 ...
- 顺序查找、折半查找、分块查找
目录 一.查找的基本概念 二.顺序查找 一般线性表的顺序查找 有序线性表的顺序查找 三.折半查找 折半查找的算法 判定树 四.分块查找 一.查找的基本概念 查找:在数据集合中寻找满足某种条件的数据元素 ...
- 查找(包括顺序查找和折半查找)
顺序查找 顺序查找又叫线性查找,主要用于线性表中的查找.顺序查找通常情况下分为对一般无序线性表的查找和对按关键字有序的顺序表的查找.下面进行比较讨论: 1.一般线性表的查找 作为一个直观的查找方法,其 ...
- 数据结构50:二分查找法(折半查找法)
折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高.但是该算法的使用的前提是静态查找表中的数据必须是有序的. 例如,在{5,21,13,19,37,75,56,64,88 ...
- 顺序表查找+折半查找(二级)
我们讲了各种数据 结构之后,比如讲了线性表了,讲了栈和队列,讲了树和二叉树,讲了图之后呢,我们最后还有两个专题,一个叫查找,一个叫排序,我们先看看查找,查找包括哪些内容啊,第一个线性表的查找,数组或者 ...
最新文章
- 饶毅:脑、物理、化学、 生物、心理认知的交叉研究
- HTML框架,链接,登录,注册联合应用
- python语言程序设计及医学应用_Python语言程序设计(高等学校计算机专业规划教材)...
- SpringBoot 自动装配原理
- Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
- python类型检测最终指南--Typing的使用
- 怎么设置服务器上的文件夹密码,文件服务器怎么设置文件夹密码
- 在 Delphi 下使用 DirectSound (6): 按文件自己的格式(TWaveFormatEx)播放
- 2021-10-13快速查询DHL物流信息,并筛选出提前签收单号
- 全桥电路matlab仿真,三相电压型桥式逆变电路及建模与仿真结构
- Exception evaluating SpringEL expression:
- 硬盘备份到新电脑,你需要知道这个技巧
- 史上最全Python入门基础教程(非常详细)
- WIN10中 提示“Win键已禁用”的解决方法
- Andorid显示圆形图片的4种方式
- 不在同一局域网的两台电脑如何通过ssh连接
- 微信公众号获取openid(java后端+html实现)
- 2012暑期川西旅游之第八天(青城山-成都)_我是亲民_新浪博客
- NDIM 磁力下载器 MAC多版本设置UA
- 速写干货 | 抓住动态线,你绝对可以画好动态速写
热门文章
- 是时候用ActiveSync同步Traveler手机邮件了
- 2019年智能科学与产业综述论文盘点
- 微信公众号支付测试方法
- 最新流浪猫流浪狗H5完整运营源码下载/可封装APP
- android的app勾选了通知消息,为何Android中大部分锁屏APP都要手动勾选“通知使用权”(Notification Access)?...
- 【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战
- C#批量剪切视频文件
- 普通人的网页配色方案
- 《网站分析实战--如何以数据驱动决策,提升网站价值》学习笔记
- Fragment懒加载,上岸蚂蚁金服