IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 顺序表的静态顺序查找-----数据结构与算法笔记 -> 正文阅读

[数据结构与算法]顺序表的静态顺序查找-----数据结构与算法笔记

一、查找

参考书:《数据结构(C语言)》–严蔚敏等编著,清华大学出版社。

1、顺序表的查找

查找的定义很简单,查找到则称为是成功的,查找不到则称为是不成功的,在查找的实际应用中,引入了两种查找表:静态查找表和动态查找表

静态查找表:(1)查询某个 “特定的” 数据元素是否存在于表中,(2)检索某个 “特定的” 数据元素的各种属性;
动态查找表:(1)若在查找过程中同时进行插入查找表中不存在的数据元素,或者从查找表中删除已存在的某个数据元素;

所查找的特定的数据元素称为关键字key
在定义数据元素类型方面:

typedef int KeyType;
typedef struct {
	KeyType key;	//关键字域
}ElemType;

typedef struct {
	ElemType *elem;	//存储空间基址(定义了一个静态存放数据的数组)
	int length;		//表长
}STTable;

顺序表的查找的应用范围:(1)顺序表或链表表示的静态查找表;(2)表内元素无序;

2、平均查找长度ASL

平均查找长度是评价查找算法的指标:关键字的平均比较次数 => 平均查找长度
A S L = ∑ i = 1 n p i c i ASL ={\color{red} \sum_{i=1}^{n} pi ci} ASL=i=1n?pici

n = 记录的个数;
pi = 查找第i个记录的概率;
ci = 找到第i个记录所需要的比较次数;

顺序表的查找优缺点:

优点:算法简单,逻辑次序无要求,且不同存储结构均使用;
缺点:ASL太长,时间效率太低;

相关代码:

#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define MAXSIZE 100

typedef int Status;
typedef int KeyType;
typedef struct {
	KeyType key;	//定义关键字域
} ElemType;

typedef struct {
	ElemType *elem;	//存储空间基址(定义了一个静态存放数据的数组)
	int length;		//表长
} STTable;

Status InitTable(STTable &ST,int n);
Status InitTable(STTable &ST,int n) {
	ST.elem = (ElemType *)malloc(MAXSIZE*sizeof(ElemType));
	if(!ST.elem) return ERROR;
	ST.length = 0;
	int i,num;
	for(i=1; i<=n; i++) {	//0号单元备用
		scanf("%d",&num);
		ST.elem[i].key = num;
		ST.length++;
	}
	return OK;
}

Status Search_Seq(STTable ST,KeyType key);
//在顺序表ST中查找值为key的数据元素(从后往前找)
Status Search_Seq(STTable ST,KeyType key) {
	ST.elem[0].key = key;	//哨兵
	int i;
	for(i=ST.length; ST.elem[i].key != key; --i);
	return i;
	/*
	for(int i=ST.length; i>=1; --i)	//后往前
		if(ST.elem[i].key == key) return i;
	return 0;
	*/
	/*
	for(int i=1; i<=ST.length; i++)	//前往后
		if(ST.elem[i].key == key) return i;
	return 0;
	*/
}

int main(void) {
	STTable ST;
	int n,key,i;
	scanf("%d",&n);
	InitTable(ST,n);
	scanf("%d",&key);
	i = Search_Seq(ST,key);
	if(i != 0) printf("%d\n",i);
	else printf("查无此项\n");
	return 0;
}

/*
输入:
5
12 33 15 10 8
20
输出:查无此项

输入:
6
12 33 15 10 8 77
12
输出:1	//位置
*/
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:33:00  更:2021-12-15 18:33:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 16:52:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码