查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。

查找表:用于查找的数据集合称为查找表,一般有以下操作:①查找是否在表中;②查找属性;③进行操作。

查找表又分为:

①静态查找表:只可以进行之前的①②操作,例如顺序查找、折半查找;

②动态查找表:可以进行以上①②③所有操作,例如二叉排序树、二叉平衡树。

关键字:数据元素中某个可以唯一标识该元素的数据项。

平均查找长度(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语言数据结构基础学习笔记——静态查找表的更多相关文章

  1. C语言数据结构基础学习笔记——动态查找表

    动态查找表包括二叉排序树和二叉平衡树. 二叉排序树:也叫二叉搜索树,它或是一颗空树,或是具有以下性质的二叉树: ①若左子树不空,则左子树上所有结点的值均小于它的根结点的值: ②若右子树不空,则右子树上 ...

  2. C语言数据结构基础学习笔记——基础线性表

    线性表是指具有相同数据类型的n(n>=0)个数据元素的有限序列,它具有一个表头元素和一个表尾元素,并且每一个数据元素最多只有一个直接前驱和一个直接后继. 线性表的顺序存储也叫作顺序表,它的特性是 ...

  3. C语言数据结构基础学习笔记——B树

    2-3树:是一种多路查找树,包含2结点和3结点两种结点,其所有叶子结点都在同一层次. 2结点:包含一个关键字和两个孩子(或没有孩子),其左孩子的值小于该结点,右孩子的值大于该结点. 3结点:包含两个关 ...

  4. C语言数据结构基础学习笔记——树

    树是一种一对多的逻辑结构,树的子树之间没有关系. 度:结点拥有的子树数量. 树的度:树中所有结点的度的最大值. 结点的深度:从根开始,自顶向下计数. 结点的高度:从叶结点开始,自底向上计数. 树的性质 ...

  5. C语言数据结构基础学习笔记——栈和队列

    之前我们学过了普通的线性表,接下来我们来了解一下两种特殊的线性表——栈和队列. 栈是只允许在一端进行插入或删除的线性表. 栈的顺序存储结构也叫作顺序栈,对于栈顶指针top,当栈为空栈时,top=-1: ...

  6. C语言数据结构基础学习笔记——C语言基础

    抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作,通常用(数据对象,数据关系,基本操作集)这样的三元组来表示抽象数据类型. 数据结构是相互之间存在一种或多种特定关系的数据元素的集合, ...

  7. C语言数据结构基础学习笔记——图

    图(G)由顶点集(V)和边集(E)组成,G=(V,E) 常用概念: ①V(G)表示图G中顶点的有限非空集,V永不为空: ②用|V|表示图G中顶点的个数,也称为图G的阶: ③E(G)表示图G中顶点之间关 ...

  8. 数据结构算法C语言实现(三十二)--- 9.1静态查找表

    一.简述 静态查找表又分为顺序表.有序表.静态树表和索引表.以下只是算法的简单实现及测试,不涉及性能分析. 二.头文件 /** author:zhaoyu date:2016-7-12 */ #inc ...

  9. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

随机推荐

  1. JavaScript中为什么使用立即执行函数来封装模块?

    最近在学习JavaScript基础,在学习到面向对象编程时,学习到在JavaScript中实现模块化的方法,其中一个重要的点是如何封装私有变量. 实现封装私有变量的方法主要是: 使用构造函数 func ...

  2. java方法 throws exception 事务回滚机制

    使用spring难免要用到spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检 ...

  3. 测试那些事儿—selenium IDE 自动化测试

    浏览器 Firefox Setup 35.0.1 安装完成后设置菜单栏 关闭浏览器自动更新 插件配置(必备武器) FireBug Firebug是firefox下的一个扩展,能够调试所有网站语言,如H ...

  4. day11.2lambda函数表达式 及其返回值注意事项

    lambda表达式 用于表示简单的函数 func1=lambda 参数:一句话函数体(默认返回函数体内执行的内容) 1.1结构 func=lambda a1,a2 : a1+100 val=func( ...

  5. Spock - Document -06 - Modules

    Modules Peter Niederwieser, The Spock Framework TeamVersion 1.1 Guice Module Integration with the Gu ...

  6. 复习下CSS-零碎要点

    一,CSS选择器 1.  h1 > strong {color:red;}表示的是只有h1下子元素才是红色,“孙子”就不行. 2.  h1 + p {margin-top:50px;}   选择 ...

  7. C# 枚举用法

    public static class EnumExtensions { public static string GetDescription(this Enum value) { return v ...

  8. [WC2006]水管局长

    原题链接 前言 搞不懂为什么要写LCT,搞不懂为什么要加强数据.像这道题是用父亲表示法来做的.虽然复杂度不是log,但是现在下面这份代码却是无论从空间,还是代码量,还是时间都是优秀不止一点. 而且这样 ...

  9. promise在angular中的基本使用

    promise在angular中的基本使用 <!DOCTYPE html> <html ng-app="myApp"> <head> <m ...

  10. pymongo中的连接操作:Connection()与MongoClient()

    class MongoClient(pymongo.common.BaseObject) Connection to MongoDB. Method resolution order: MongoCl ...