数据--第47课 - 查找的概念
第47课 - 查找的概念
1. 查找的定义
(1) 查找表是由同一类型的数据元素构成的集合。
(2) 查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。
注意:
l 从逻辑意义上来说,查找表中的数据元素之间没有本质的关系。
l 查找表可以不是线性表,树结束和图结构的任意一种。
2. 查找的概念
(1)查找的操作
静态查找:
查询某个特定的数据元素是否在查找表中。
检索某个特定的数据元素的各种属性。
动态查找:
在查找中插入一个数据元素。
从查找表中删去某个数据元素。
(2)查找表中的关键字
数据元素中某个数据项的值,用以标识一个数据元素。
主关键字:可以唯一的标识一个数据元素的关键字。
次关键字:可以识别不止一个数据元素的关键字。
(3)查找的结果
查找成功:
找到满足条件的数据元素,作为结果,可返回数据元素在查找表中的位置,也可以返回该数据元素的具体信息。
查找失败:
无法找到满足条件的数据元素,作为结果,应该报告一些错误信息,如失败标志、失败位置。
3. 程序--静态查找和动态查找
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "SeqList.h"
#define SIZE 20
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void print_array(int a[], int len)
{
int i = 0;
for(i=0; i<len; i++)
{
printf("%d, ", a[i]);
}
printf("\n");
}
int static_search(int a[], int len, int key)
{
int ret = -1;
int i = 0;
for(i=0; i<len; i++)
{
if( a[i] == key )
{
ret = i;
break;
}
}
return ret;
}
void print_list(SeqList* list)
{
int i = 0;
for(i=0; i<SeqList_Length(list); i++)
{
printf("%d, ", (int)SeqList_Get(list, i));
}
printf("\n");
}
int dynamic_search(SeqList* list, int key)
{
int ret = -1;
int i = 0;
for(i=0; i<SeqList_Length(list); i++)
{
if( (int)SeqList_Get(list, i) == key )
{
ret = i;
SeqList_Delete(list, i);
break;
}
}
return ret;
}
int main(int argc, char *argv[])
{
SeqList* list = SeqList_Create(SIZE);
int a[SIZE] = {0};
int i = 0;
int key = 0;
int index = 0;
srand((unsigned int)time(NULL));
for(i=0; i<SIZE; i++)
{
a[i] = rand() % 100;
SeqList_Insert(list, (SeqListNode*)(rand() % 100), i);
}
key = rand() % 100;
printf("Static Search Demo\n");
printf("Key: %d\n", key);
printf("Array: \n");
print_array(a, SIZE);
index = static_search(a, SIZE, key);
if( index >= 0 )
{
printf("Success: a[%d] = %d\n", index, a[index]);
}
else
{
printf("Failed!\n");
}
printf("Dynamic Search Demo\n");
printf("Key: %d\n", key);
printf("List: \n");
print_list(list);
index = dynamic_search(list, key);
if( index >= 0 )
{
printf("Success: list[%d] = %d\n", index, key);
}
else
{
printf("Failed!\n");
}
print_list(list);
return 0;
}
小结:
(1) 查找是程序设计领域应用最广泛的技术之一。
(2) 如何快而准的找到符合条件的数据元素是查找的技术关键。
(3) 查找表中的数据元素之间没有本质关键,但是想获得较高的查找性能必须能重新组织数据元素之间的关系。
转载于:https://www.cnblogs.com/free-1122/p/11336098.html
数据--第47课 - 查找的概念相关推荐
- 电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课
电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest ...
- 数据结构之查找的概念及简单实现
查找的概念 查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表是由同一类型的数据元素(或记录)构成的集合.由于集合中的数据元素之间存在着完全松散的关系,因此查找表是一种非 ...
- 顺序查找的概念及实现代码详解
文章目录 顺序查找的概念 一般线性表的顺序查找(顺序表) 完整代码 平均查找长度 一般线性表的顺序查找(链表) 完整代码 平均查找长度 顺序查找的优缺点 关键字有序的顺序表的顺序查找 平均查找长度 顺 ...
- 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...
这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...
- Pacbio 数据相关的几个重要概念
Pacbio 数据相关的几个重要概念 pacbio 基本概念 Polymerase Read, Subreads,Circular Consensus Sequence 的概念和相互关系 Pacbio ...
- 第47课 称心如意的输入 《小学生C++趣味编程》
/* 第47课 称心如意的输入试编一程序,输入某一位同学成绩时,自动检查输入数据的正确性, 当输入有误时重新输入.试编一程序,自动检查输入数据的正确性,如当满分为100分时,输入小于0或大于100的数 ...
- 修改图层的范围_PS教程连载第47课:PS图层操作案例星球
PS教程连载第47课 PS图层操作案例--星球 格式:mp4视频 素材领取:请查看文章底部 Photoshop调整图层讲解:执行"图层-新建调整图层"命令(共计有16 个命令)或者 ...
- 数据统计分析的16个基础概念
来源:EasyShu 本文约11000字,建议阅读20分钟本文介绍了数据统计分析的16个基本概念. 一.描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特征和 ...
- 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt
您所在位置:网站首页 > 海量文档  > 计算机 > 数据结构与算法 数据库第06章关系数据理习题课.ppt36页 本 ...
- 数据科学 5.1 数据处理(概念)
数据科学 5.1 数据处理(概念) 一.数据库基础 1.基本概念 二.数据整合与数据清洗 1.数据整合 1.1SQL语句介绍 1.2数据纵向合并 1.3数据横向合并 1.4SQL进行汇总 2.数据清洗 ...
最新文章
- 利用Unity自带的合图切割功能将合图切割成子图
- Dubbo与SpringBoot整合流程(从实例入手,附代码下载)
- 51NOD 1220 约数之和(杜教筛)
- 安卓基本控件及应用总结
- Mac OS X上安装配置apache服务器
- Javascript中的几种继承方式比较
- 数据结构与与算法之插入排序
- Java基础:查漏补缺
- 事件绑定完整版2016/4/21
- ubuntu录屏软件kazam格式转换+视频裁剪+gif转换
- html小游戏社区,h5小游戏源码(h5养成社区源码)
- SNMP 简单网络管理协议
- 狗都能看懂的MAML原理讲解和代码实现
- 56个民族及民族代码的sql语句
- PHP accesstoken失效,微信开发-ACCESS TOKEN 过期失效解决方案
- Windows 开机启动时自动删除 Temp 文件夹下的临时文件
- 宝藏级别的负数取模,让你关于负数取模不在陌生 >o< 进来看看吧
- 易语言 执行java_CallJava易语言调用JAVA代码
- 服务器性能测试工具及实战,性能测试实战--《软件测试52讲》
- 微信小程序定位功能+页面滚动+列表展示
热门文章
- java单例模式的7种实现方式
- JavaSE集合框架-01-集合框架体系及表数据结构
- 还在搭建传统IT架构的你,正在慢慢被行业淘汰
- python---用python实现插入排序
- 数据算法_JS数据结构与算法_排序和搜索算法
- 树莓派小车python pid_树莓派小车实现转弯(创乐博套件)
- python exec函数_Python3
- c语言鸡蛙问题用while,C语言第3章课件.ppt
- 加密能抓到吗?怎么抓_网络赌博被抓怎么处罚 网上参与赌博会坐牢吗
- html如何连接外部网页,怎么链接一个外部的css文件?