静态查找方法(顺序查找与二分查找)
来源:互联网 发布:javascript和node.js 编辑:程序博客网 时间:2024/05/21 21:55
/*静态查找的几种方法*/#include <stdio.h>#define MaxSize 20typedef struct LNode *List;struct LNode{ ElementType Data[MaxSize]; int length;}; /*顺序查找(Sequential Search),采用了建立哨兵的查找思想,最好查找复杂度O(1),最坏为O(n),平均查找复杂度为O(n/2)*/int SequentialSearch(List Tb1,ElementType K){ /*在ElementType[1]~ElementType[n]中查找关键字为K的数据元素*/ int i; Tb1->Data[0]=K; /*建立哨兵*/ for(i=Tb1->length;Tb1->Data[i]!=K;i--); return i; /*查找成功返回元素所在单元的下标;不成功则返回0*/ } /*二分查找Binary Search,时间复杂度为O(logN)*/ /*前提n个数据元素的关键字满足有序(排序至少要花费O(nlogn)的时间),并且是连续存放(数组)*/ /* 二分查找判定树: 判定树上的每个结点需要查找的次数刚好等于该结点所在的层数; 查找成功时查找次数不会超过判定树的深度 n个结点的判定树的深度为[log2n]+1 平均成功查找次数ASL=(每层结点数*层数之和)/总的结点数 =log2(n+1)-1 二分查找最坏情况和平均情况相当接近 二分查找插入删除都必须移动大量的结点,二分查找适合那种一经建立就很少改动,而又经常需要查找的线性表 对于那些查找少而又经常需要改动的线性表,可以采用链表作为存储结构,经行顺序查找,链表无法实现二分查找 */ /*假设有13个数据元素,按照关键字由小到大顺序存放,二分查找关键字为444的数据元素过程*/ int BinarySearch(List Tbl,ElementType K){ /*在表Tbl中查找关键字为K的数据元素*/ int left,right,NotFound=-1; left=1; //初始左边界 right=Tbl->length; //初始有边界 while(left<=right) { mid=*(left+right)/2; //计算中间元素坐标 if(K<Tbl->Data[mid]) right=mid-1; //调整右边界 else if(K>Tbl->Data[mid]) left=mid+1; //调整左边界 else return mid; //查找成功,返回数据元素下标 } return NotFound //查找不成功,返回-1 }
阅读全文
0 0
- 静态查找方法(顺序查找与二分查找)
- 顺序查找与二分查找
- 顺序查找与二分查找
- 顺序查找与二分查找
- 顺序查找与二分查找
- 顺序查找,二分查找
- 顺序查找、二分查找
- 顺序查找,二分查找
- 二分查找,顺序查找
- 顺序查找 & 二分查找
- 数据结构与算法专题之查找与排序——静态查找(顺序、二分、哈希)
- 查找(顺序查找、二分查找、插值查找)
- 算法:静态查找表(Static Search Table)(顺序查找、二分查找、插值查找、斐波纳契查找)
- 查找方法----二分查找
- 数据结构--顺序查找、二分查找
- PHP 顺序查找、二分查找
- 顺序查找和二分查找
- 二分查找和顺序查找
- 数据库及SQL----常用知识点总结
- Java JSON Date类型数据处理问题
- 给图片识别添加音效系统
- NSArray、NSMutableArray的copy、mutableCopy
- 优雅的使用python
- 静态查找方法(顺序查找与二分查找)
- Android Studio导入Eclipse项目
- 漏洞--Struts2远程命令执行S2-016
- Android7.0相机兼容处理方法
- 11.20第十三课
- Unsupported major.minor version 52.0
- 使用VideoView 或者SurfaceView 实现视频播放功能
- MySQL命令
- linux下面文件的一些基本操作