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. 构造方法 ...
 
随机推荐
- Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
			
本文系转载-原创@HollisChuang :http://www.hollischuang.com/archives/553 1.PO(persistant object) 持久对象 在 o/r ...
 - leetcode 刷题(3)--- 无重复字符的最长子串
			
给定一个字符串,找出不含有重复字符的最长子串的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 ...
 - .NET数据采集
			
public string GetHttpData(string Url) { string sException = null; string sRslt = null; WebResponse o ...
 - freemarker demo
			
<!--freemarker--> <dependency> <groupId>org.springframework.boot</groupId> & ...
 - 第五章Bookstrap
			
响应式原理: @media screen and (min-width:300px) and (max-width:500px) { /* CSS 代码 */ } #代表页面宽度大于300px和小雨5 ...
 - 企业SQL笔试
			
Student(SID, Sname, Sage, Ssex) 学生表 Course(CID, Cname, TID) 课程表 SC(SID, CID, score) 成绩 ...
 - jquery考试成绩统计系统
			
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
 - return,break,continue三者区别
			
详解:http://www.cnblogs.com/yangdabao/p/6172210.html return:直接结束这个方法,后面所有代码不再执行,不管循坏外,还是循环内,全部停止,直接返回 ...
 - Elasticsearch(单节点)
			
1 Elasticsearch搭建 1.1 通过Wget下载ElasticSearch安装包wget https://artifacts.elastic.co/downloads/elasticsea ...
 - Ubuntu安装ssh 与samba
			
1.安装ssh服务 sudo apt-get install openssh-server 2.开启ssh(/etc/init.d文件夹) sudo service ssh start 2.安装sam ...