查找之一 , 顺序查找
来源:互联网 发布:php高端培训 编辑:程序博客网 时间:2024/06/01 13:32
在写顺序查找之前呢,先介绍几个概念:
1、 查找表 :相同类型的数据元素组成的集合。
2、 关键字: 数据元素中能够唯一标示数据元素的项(一项或多项)。
3、 查找 : 根据给定的key(关键字)值,查找某一数据元素,如果存在满足条件的数据元素则查找成功,否则查找失败。如果查找成功,一般返回该数据元素所在的位置。
4、 静态查找: 查找时只对数据元素进行查询或检索。
5、动态查找:查找过程中,删除已经存在的数据元素,或者插入不存在的数据元素。
6、三种查找方法:顺序表和链表查找 、 散列表查找、索引查找表查找。
顺序表和链表查找:根据key逐一和表中的元素进行比较。
散列表查找: 根据给定的key值直接访问表中的数据元素。
索引查找表查找:先查找数据元素所在的块,再到快中查找数据元素。
相关概念就介绍到这里,下面重点看看顺序表和链表查找方法:
对于给定的数据元素集合 R , 查找 key,逐一对表中元素进行比较,知道查找到key , 或者表结束,例如,对于顺序表R =
2038427899241109
查找 key = 2 , 分别和20、38、4、2 相比较 , 表中存在该元素 , 返回该元素在表中的位置位置4.
查找 key = 22 , 分别和 20、38、4、2、78、99、24、1、10、9 比较都没有相等的元素,返回 -1 。
下面是顺序表查找的Java实现版:
public class SeqSearch {public static int [] DATA_COLLECTION = { 20,38,4,2,78,99,24,1,10,9};public static int seqSearch(int[] src , int key){if(src == null || src.length == 0)return -1;for(int i = 0 ; i < src.length ; i++){if(src[i] == key){return i ;}}return -1;}public static void main(String[] args) {System.out.println("search key 2 :"+seqSearch(DATA_COLLECTION,2));System.out.println("search key 22 :"+seqSearch(DATA_COLLECTION,22));}}
关于顺序查找的算法分析:假设对每一个查找元素查找到的概率相等是P= 1/n,因为对每一个成功查找到元素的比较次数是 n -i +1( i 为查找到元素所在的位置) 。 那么,平均查找长度ASL=a1 * p1 + a2 * p2 ... ... + an * pn = 1/n(1+2+3 + ...... + n) = (n+1)/2 。
所以该算法的时间复杂度为O(N) , N 为表的长度 。
顺序查找方法就学到这里,下一篇 —— 二分查找。
0 0
- 查找之一 , 顺序查找
- 【算法-查找之一】顺序查找
- 查找之一:顺序表查找
- C/C++查找之一(顺序查找、折半查找(二分查找))
- 查找:顺序查找,折半查找
- 查找之顺序查找
- 查找之顺序查找
- 查找树-----顺序查找
- 顺序查找,二分查找
- 【数据结构】查找-顺序查找
- 顺序查找、二分查找
- 查找-顺序表查找
- 查找-顺序查找
- 查找---顺序查找
- 顺序查找,二分查找
- 二分查找,顺序查找
- 折半查找&顺序查找
- 查找操作------顺序查找
- 体验云编程——IOS脚本学习门户
- 黑马程序员_注解
- 排序--快速排序算法的思想及其代码实现
- 常用基本算法(Java实现)
- 关于Red5 NetConnection.Connect.Rejected的问题
- 查找之一 , 顺序查找
- Java回调函数(方法)
- 图文详解YUV420数据格式
- 笔记_并发编程实践_十二
- JAXP----SAX操作XML文档
- R语言与机器学习学习笔记(分类算法)(6)logistic回归
- 1999~2012年全国百优博士论文 (计算机类)
- epoll详解
- 局部变量和全局变量重名