查找->静态查找表->顺序查找(顺序表)
文字描述
顺序查找的查找过程为:从表中最后一个记录开始,逐个进行记录的关键字和给定值的比较,若某个记录的关键字和给定值比较相等,则查找成功,找到所查记录;反之,若直至第一个记录,其关键字和给定值比较都不等,则表明表中没有所查记录,查找不成功。
示意图
略
算法分析
从顺序查找的过程看,Ci取决于所查记录在表中的位置。如:查找表中最后一个记录时,仅需比较一次,Ci为1;而查找表中第一个记录时,需比较n次,Ci为n。一般情况下Ci等于n-i+1。
假设每个记录的查找概率相等,且每次都能查找成功,则平均查找长度为:
(1/n) * [n(n+1)/2] = (n+1)/2
假设考虑查找不成功的可能性,每个记录的查找概率也相等,则平均查找长度为:
(1/2n) * [n(n+1)/2] + (1/2n)*n*(n+1) = [3*(n+1)]/4
代码实现
#include <stdio.h>
#include <stdlib.h> #define EQ(a, b) ((a) == (b))
#define LT(a, b) ((a) < (b))
#define LQ(a, b) ((a) <= (b))
#define MAX_SIZE 50
#define DEBUG typedef int KeyType;
typedef char InfoType;
/*数据元素类型定义*/
typedef struct{
//关键字域
KeyType key;
//其他域
InfoType otherinfo;
}ElemType;
/*静态查找表的顺序存储结构*/
typedef struct{
//数据元素存储空间基址,建表时按实际长度分配,0号单元留空
ElemType *elem;
//表长度
int length;
}SSTable; /*顺序查找算法
*
*在顺序表ST中顺序查找其关键字等于key的数据元素。
*若找到,则函数值为该元素在表中的位置,否则为0
*/
int Search_Seq(SSTable ST, KeyType key){
//哨兵
ST.elem[].key = key;
int i = ;
//从后往前找
for(i=ST.length; !EQ(ST.elem[i].key, key); --i);
//找不到时i为0
return i;
} //顺序打印顺序表中的数据元素
void print_Seq(SSTable ST){
int i = ;
for(i=; i<= ST.length; i++){
printf("[%d]=%d/%c; ", i, ST.elem[i].key, ST.elem[i].otherinfo);
}
printf("\n");
} int main(int argc, char *argv[])
{
int i = , loc = , key=;
ElemType arr[MAX_SIZE+] = {};
for(i=; i<argc; i++){
arr[i].key = atoi(argv[i]);
arr[i].otherinfo = 'a'+i-;
}
SSTable ST;
ST.length = i-;
ST.elem = arr;
#ifdef DEBUG
printf("输入了数据:");
print_Seq(ST);
#endif
while(){
printf("输入待查找的key值(负值表示结束):");
scanf("%d", &key);
if(key < )
break;
loc = Search_Seq(ST, key);
printf("key值为%d的位置在%d\n", key, loc);
}
return ;
}
顺序查找(顺序表)
运行

查找->静态查找表->顺序查找(顺序表)的更多相关文章
- 查找->静态查找表->分块查找(索引顺序表)
文字描述 分块查找又称为索引顺序查找,是顺序查找的一种改进方法.在此查找算法中,除表本身外, 还需要建立一个”索引表”.索引表中包括两项内容:关键字项(其值为该字表内的最大关键字)和指针项(指示该子表 ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- Java 二维数组,排序、切换顺序,查表法二进制十进制,这班查找、排序(冒泡、选择)、遍历,获取最大小值(4)
Java 二维数组,排序.切换顺序,查表法二进制十进制,折半查找.排序(冒泡.选择).遍历,获取最大小值(4)
- 查找->静态查找表->次优查找(静态树表)
文字描算 之前分析顺序查找和折半查找的算法性能都是在“等概率”的前提下进行的,但是如果有序表中各记录的查找概率不等呢?换句话说,概率不等的情况下,描述查找过程的判定树为何类二叉树,其查找性能最佳? 如 ...
- 查找->静态查找表->折半查找(有序表)
文字描述 以有序表表示静态查找表时,可用折半查找算法查找指定元素. 折半查找过程是以处于区间中间位置记录的关键字和给定值比较,若相等,则查找成功,若不等,则缩小范围,直至新的区间中间位置记录的关键字等 ...
- 算法与数据结构之顺序查找(C语言)
#include<stdio.h> #include<stdlib.h> //顺序查找基本思想:从线性表的一端开始,逐个检查关键字是否满足给定的条件 int Sequentia ...
- Java 实现顺序查找
package search; import java.util.Scanner; /*通常把查找过程中对关键字的平均比较次数,也叫平均查找长度(ASL)作为衡量一个查找算法效率优劣的标准: * AS ...
- 查找算法(I) 顺序查找 二分查找 索引查找
查找 本文为查找算法的第一部分内容,包括了基本概念,顺序查找.二分查找和索引查找.关于散列表和B树查找的内容,待有空更新吧. 基本概念 查找(search)又称检索,在计算机上对数据表进行查找,就是根 ...
- SQLServer 查询使用键查找时锁申请及释放顺序
最近看了高兄的一篇文章,Sql Server 高频,高并发访问中的键查找死锁解析,很有收获,里面讲到了键查找引起的死锁问题. 当然看的过程中,其实自己有个疑问: 对于键查找这类查询,会申请哪些锁,锁申 ...
随机推荐
- 每日英语:How To Survive The Windows XPiration Date
The default background for Microsoft's Windows XP operating system -- a perfect blue sky full of cot ...
- python(60):configparser 函数,配置文件
ConfigParser模块学习 介绍 ConfigParser模块在python中是用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section),每 ...
- cocos2d-x 重力感应
本文没你想象的那么,,复杂.事实上就是通过重力感应控制个小球移动而已. 先看头文件: #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE ...
- 初识Spring Security
本文参考或者转自:http://haohaoxuexi.iteye.com/blog/2154299 1.新建Spring Security配置文件spring-security.xml:<?x ...
- 关于Unity中NGUI的Checkbox复选框、Slider滑动条和Button的6种触发回调事件的方式
Checkbox复选框 1.创建一个NGUI背景Sprite1节点 2.打开NGUI---->Open---->Prefab Toolbar---->选择一个复选框节点,拖拽到背景节 ...
- RedisLive监控工具 windows部署笔记
1. Python2.7环境安装 Path环境变量中添加 2.下载安装 VC Compiler for Python 地址: http://www.microsoft.com/en-us/dow ...
- linux swoole
swoole安装需要:linux7 +php5.3.10以上版本+gcc-4.4 或更高版本 下载地址: https://github.com/swoole/swoole-src/releases h ...
- 【代码审计】五指CMS_v4.1.0 后台存在SQL注入漏洞分析
0x00 环境准备 五指CMS官网:https://www.wuzhicms.com/ 网站源码版本:五指CMS v4.1.0 UTF-8 开源版 程序源码下载:https://www.wuzhi ...
- JS document.execCommand实现复制功能(带你出坑)
最近项目中需要实现功能:点击button,复制input框的值: 我使用的是 document.execCommand('copy')的方法: 但是很郁闷的是,始终实现不了功能:代码如下 HTML代码 ...
- linux下WEB服务器安装、配置VSFTP
转载 http://www.oicto.com/centos-vsftp/?tdsourcetag=s_pcqq_aiomsg linux下WEB服务器安装.配置VSFTP 由 admin · 发布 ...