C语言数据结构基础学习笔记——静态查找表
查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。
查找表:用于查找的数据集合称为查找表,一般有以下操作:①查找是否在表中;②查找属性;③进行操作。
查找表又分为:
①静态查找表:只可以进行之前的①②操作,例如顺序查找、折半查找;
②动态查找表:可以进行以上①②③所有操作,例如二叉排序树、二叉平衡树。
关键字:数据元素中某个可以唯一标识该元素的数据项。
平均查找长度(ASL):在查找的过程中,一次查找的长度是指需要比较的关键字次数,而平均查找长度则是所有查找过程中进行关键字的比较次数的平均值。
顺序查找:也叫线性查找
可以从数组头部向后遍历:
int Search1(int a[],int n,int key){
for(int i=;i<=n;i++){ //注意从1开始
if(a[i]==key) return i;
}
return o;
}
也可以从尾部向前遍历:
int Search1(int a[],int n,int key){
int i=n;
a[]=key; //设置哨兵
while(a[i]!=key){ //如果不是要找的元素
i--; //从后往前找
}
return i; //如果查找失败也会返回0
}
折半查找:仅适用有序的线性表
int Binary_Search(SeqList L,ElemType key,int n){ //L是一个有序顺序表,key是代查找的关键字,n是L的长度
int low=,high=n-,mid; //low,high,mid分别代表当前查找段的首位下标,末位下表和中间下标
while(low<=high){ //只要low与high不汇合,就表示查找表没有扫描完
mid=(low+high)/; //中间下标为low和high之和除以2
if(L.elem[mid]==key) return mid; //查找成功
else if(L.elem[mid]>key) high=mid-; //中间值比key大,向下查找
else low=mid+; //中间值比key小,向上查找
}
return -; //未能找到
}
分块查找:是折半查找与顺序查找的结合,将一个线性表分块,块中存储顺序任意,但要保证前一块的最大值小于后一块的最小值,同时,需要额外建立一个索引表来存储索引,每一个索引对应表中的每一块。
分块查找的思想:
①确定带查找值在哪一块(折半查找);
②在确定的块中查找待查找值(顺序查找)。
分块查找的定义:
#define MaxSize 50
typedef struct{
int key; //这个索引块中最大关键字的值
int low,num; //存储索引块中第一个元素的下标和块的长度
}indexElem; //索引块结构
indexElem index[MaxSize];
C语言数据结构基础学习笔记——静态查找表的更多相关文章
- C语言数据结构基础学习笔记——动态查找表
动态查找表包括二叉排序树和二叉平衡树. 二叉排序树:也叫二叉搜索树,它或是一颗空树,或是具有以下性质的二叉树: ①若左子树不空,则左子树上所有结点的值均小于它的根结点的值: ②若右子树不空,则右子树上 ...
- C语言数据结构基础学习笔记——基础线性表
线性表是指具有相同数据类型的n(n>=0)个数据元素的有限序列,它具有一个表头元素和一个表尾元素,并且每一个数据元素最多只有一个直接前驱和一个直接后继. 线性表的顺序存储也叫作顺序表,它的特性是 ...
- C语言数据结构基础学习笔记——B树
2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关 ...
- C语言数据结构基础学习笔记——树
树是一种一对多的逻辑结构,树的子树之间没有关系. 度:结点拥有的子树数量. 树的度:树中所有结点的度的最大值. 结点的深度:从根开始,自顶向下计数. 结点的高度:从叶结点开始,自底向上计数. 树的性质 ...
- C语言数据结构基础学习笔记——栈和队列
之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...
- C语言数据结构基础学习笔记——C语言基础
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合, ...
- C语言数据结构基础学习笔记——图
图(G)由顶点集(V)和边集(E)组成,G=(V,E) 常用概念: ①V(G)表示图G中顶点的有限非空集,V永不为空: ②用|V|表示图G中顶点的个数,也称为图G的阶: ③E(G)表示图G中顶点之间关 ...
- 数据结构算法C语言实现(三十二)--- 9.1静态查找表
一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
随机推荐
- mybatis 源码分析二
1.SqlSession下的四大对象 Executor.StatementHandler.ParameterHandler.ResultSetHandler StatementHandler的作用是使 ...
- 聊一聊 redux 异步流之 redux-saga
让我惊讶的是,redux-saga 的作者竟然是一名金融出身的在一家房地产公司工作的员工(让我想到了阮老师...),但是他对写代码有着非常浓厚的热忱,喜欢学习和挑战新的事物,并探索新的想法.恩,牛逼的 ...
- javascript 之 继承
1.传统方式--->原型链 (过多继承了没用的属性) Grand.prototype.lastname = 'zhang' function Grand(); } var grand = ne ...
- javascript获取某个月份的天数
function DayNumOfMonth(Year,Month) //例DayNumOfMonth(2017,05);{ Month--; //月份是0~11.month=4 var ...
- OO第二单元作业分析
前言 这一单元关于线程安全的作业结束了,在助教提供的接口的帮助以及老师提供的设计模型的指导下,这三次作业还是相对轻松地完成了,中间也没有出现什么bug,可能就是因为简单的逻辑不容易出错吧,可惜两次都由 ...
- pycharm 01
为了可以在pycharm中添加中文,应该在python文件第一行加入 # -*- coding: utf- -*-
- php闭包的使用实例
$childrenNodes = array_filter($list, function($item) use($parentId){ return $item->node_pid == $p ...
- 50款经典电影效果LR预设
Film Looks LR Presets是一套非常专业的经典电影效果LR预设,包含50个不同效果的Lightroom预设,由专业摄影师和Lightroom专家开发,此套LR预设模拟摄影时代的经典电影 ...
- 网络请求 Requests
网络请求 Requests url: 就是需要请求,并进行下一步处理的urlcallback: 指定该请求返回的Response,由那个函数来处理.method: 一般不需要指定,使用默认GET方法请 ...
- haproxy反向代理
haproxy是个高性能的tcp和http的反向代理.它就是个代理.不像nginx还做web服务器 官网地址为www.haproxy.org nginx的优点和缺点 优点: 1.web服务器,应用比较 ...