第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课 - 查找的概念相关推荐

  1. 电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课

    电子沙盘数字沙盘M3D GIS虚拟三维大数据人工智能无人机倾斜摄影三维全景建模课程第47课 设置system.ini 如下内容 Server=122.112.229.220 user=GisTest ...

  2. 数据结构之查找的概念及简单实现

    查找的概念 查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素. 查找表是由同一类型的数据元素(或记录)构成的集合.由于集合中的数据元素之间存在着完全松散的关系,因此查找表是一种非 ...

  3. 顺序查找的概念及实现代码详解

    文章目录 顺序查找的概念 一般线性表的顺序查找(顺序表) 完整代码 平均查找长度 一般线性表的顺序查找(链表) 完整代码 平均查找长度 顺序查找的优缺点 关键字有序的顺序表的顺序查找 平均查找长度 顺 ...

  4. 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...

    这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...

  5. Pacbio 数据相关的几个重要概念

    Pacbio 数据相关的几个重要概念 pacbio 基本概念 Polymerase Read, Subreads,Circular Consensus Sequence 的概念和相互关系 Pacbio ...

  6. 第47课 称心如意的输入 《小学生C++趣味编程》

    /* 第47课 称心如意的输入试编一程序,输入某一位同学成绩时,自动检查输入数据的正确性, 当输入有误时重新输入.试编一程序,自动检查输入数据的正确性,如当满分为100分时,输入小于0或大于100的数 ...

  7. 修改图层的范围_PS教程连载第47课:PS图层操作案例星球

    PS教程连载第47课 PS图层操作案例--星球 格式:mp4视频 素材领取:请查看文章底部 Photoshop调整图层讲解:执行"图层-新建调整图层"命令(共计有16 个命令)或者 ...

  8. 数据统计分析的16个基础概念

    来源:EasyShu 本文约11000字,建议阅读20分钟本文介绍了数据统计分析的16个基本概念. 一.描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特征和 ...

  9. 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp数据结构与算法 数据库第06章关系数据理习题课.ppt36页 本 ...

  10. 数据科学 5.1 数据处理(概念)

    数据科学 5.1 数据处理(概念) 一.数据库基础 1.基本概念 二.数据整合与数据清洗 1.数据整合 1.1SQL语句介绍 1.2数据纵向合并 1.3数据横向合并 1.4SQL进行汇总 2.数据清洗 ...

最新文章

  1. 利用Unity自带的合图切割功能将合图切割成子图
  2. Dubbo与SpringBoot整合流程(从实例入手,附代码下载)
  3. 51NOD 1220 约数之和(杜教筛)
  4. 安卓基本控件及应用总结
  5. Mac OS X上安装配置apache服务器
  6. Javascript中的几种继承方式比较
  7. 数据结构与与算法之插入排序
  8. Java基础:查漏补缺
  9. 事件绑定完整版2016/4/21
  10. ubuntu录屏软件kazam格式转换+视频裁剪+gif转换
  11. html小游戏社区,h5小游戏源码(h5养成社区源码)
  12. SNMP 简单网络管理协议
  13. 狗都能看懂的MAML原理讲解和代码实现
  14. 56个民族及民族代码的sql语句
  15. PHP accesstoken失效,微信开发-ACCESS TOKEN 过期失效解决方案
  16. Windows 开机启动时自动删除 Temp 文件夹下的临时文件
  17. 宝藏级别的负数取模,让你关于负数取模不在陌生 >o< 进来看看吧
  18. 易语言 执行java_CallJava易语言调用JAVA代码
  19. 服务器性能测试工具及实战,性能测试实战--《软件测试52讲》
  20. 微信小程序定位功能+页面滚动+列表展示

热门文章

  1. java单例模式的7种实现方式
  2. JavaSE集合框架-01-集合框架体系及表数据结构
  3. 还在搭建传统IT架构的你,正在慢慢被行业淘汰
  4. python---用python实现插入排序
  5. 数据算法_JS数据结构与算法_排序和搜索算法
  6. 树莓派小车python pid_树莓派小车实现转弯(创乐博套件)
  7. python exec函数_Python3
  8. c语言鸡蛙问题用while,C语言第3章课件.ppt
  9. 加密能抓到吗?怎么抓_网络赌博被抓怎么处罚 网上参与赌博会坐牢吗
  10. html如何连接外部网页,怎么链接一个外部的css文件?