常用查找算法
来源:互联网 发布:足下软件学院校长 编辑:程序博客网 时间:2024/04/30 11:05
查找:按某个关键字的值在数据集合中找到符合条件的值
(顺序查找,二分查找,散列查找,索引查找)
顺序查找
适用于顺序表,链表
在某个数据集合中从某一个数据元素往后依次查找
平均查找长度:ASL=(1+n)/2;
时间复杂度:O(n)
缺点:不符合大数据集合
我以C代码为例:
int search(int a[],int n.int key){ int i; int tag=-1; for(i=0;i<n;i++){ if(a[i]==key) { tag=i; break; } } return tag;}/* for(i=0;i<n&&a[i]!=key;i++); if(i-n) tag=i;*/
二分查找(又称折半查找)
条件1:经过排序的数据集合
条件2:只适用于顺序存储的数据集合
二分查找会生成一棵二叉查找树,查找一个元素时,最多只需要查找二叉树的层数 (log2^n +1)
我以C代码为例:
非递归:
int halfSearch(int a[],int low,int high,int key){ int mid,tag=-1; while(low<=high){ mid=(low+high)/2; if(a[mid]==key){ tag=mid; break; }else if(a[mid]>key){ high=mid-1; }else{ low=mid+1; } } return tag;}
递归:
int halfSearch(int a[],int low,int high,int key){ int mid; if(low>high) return -1; mid=(low+high)/2; if(a[mid]==key) return mid; else if(a[mid]>key) return halfSearch(a,low,mid-1,key); else return halfSearch(a,mid+1,high,key);}
散列查找
设有一长度为m的散列空间,将某一个数据集合中的数据存放的散列空间中,散列函数用来及计算存储数据元素的地址的函数 一般采用除留余数法[ H(K)=K%m ]
缺陷:容易造成堆积;产生冲突
解决冲突:开放定值法–线性探查法 d=(d+1)%m; 闭散列式法
挂链法–开散列式法
关于散列查找代码后续给出
1 0
- 常用查找算法
- [zt]常用查找算法
- 常用查找算法
- 常用算法- 二分查找
- 常用查找算法
- 常用查找算法
- C++ 常用查找算法
- 常用查找算法
- 常用查找算法总结
- 常用查找算法
- day02--常用算法--查找
- day02--常用算法--查找
- 常用查找算法
- 常用的查找算法
- 常用查找算法
- 常用查找算法 总结
- 常用查找算法总结
- 常用查找算法
- 批量图片格式转化
- 点击 某个字段 ----------弹出div
- hadoop学习一
- 通信总线-IIC
- iOS 国际化语言
- 常用查找算法
- oracle sql语句查询时 表名和字段名要加双引号的问题详解,oraclesql
- Java String 转 long
- UIUIControlEvents的几种类型值
- linux自动删除tmp文件夹bash脚本
- Sublime text2 C/C++ 编译环境设置
- 项目部署到服务器上不能连接数据库
- poj之旅——3579
- Linux常用命令