顺序表查找和折半查找
来源:互联网 发布:大数据时代风险 编辑:程序博客网 时间:2024/05/20 09:26
顺序查找
查找最好的情况是在第一个位置找到了,算法时间复杂度为O(1)
最坏的情况下在最后一个位置,需要n次比较,时间复杂度为O(n)
查不到,需要比较n+1次,时间复杂度为O(n+1)
关键字在任何一个位置上是相同的,所以平均查找次数为(n+1)/2
最终时间复杂度为O(n)
//n 数组长度,key 查找关键字,a为数组int Sequential_Search(int key,int n,int *a){ int i; for(i = 1;i<=n;i++) { if(a[i] == key) return i; } return 0;}
改进的算法,设置哨兵,效率比第一个高
int Seqential_Search_new(int key,int n,int *a) { int i; a[0] = key;/*设置哨兵,避免每次比较后都要判断查找位置是否越界*/ i = n;/*循环从尾部开始*/ while(a[i] != key) { i--; } return i;/*返回0 则查找失败*/}
折半查找,又称二分查找
基本思想是在有序表中,取中间记录最为比较对象。若查找值与中间记录值相等,则查找成功;
否则小于中间值,则在左半区继续查找;大于中间值在右半区查找
int Binary_Search(int *a,int n,int key){ int low,high,mid; low = 1; high = n; while(low <= high) { mid = (low + high)/2; if(key < a[mid]) high = mid - 1; else if(key > a[mid]) low = mid + 1; else return mid; } return 0;}
阅读全文
0 0
- 顺序表查找和折半查找
- 顺序查找和折半查找
- 顺序查找和折半查找
- 顺序查找和折半查找
- 顺序查找和折半查找
- 折半查找和顺序查找
- 折半查找和顺序查找
- 顺序查找和折半查找
- 顺序查找和折半查找
- 折半查找和顺序查找
- 折半查找&顺序查找
- java顺序查找和折半查找
- python实现顺序查找和折半查找
- 数据结构---顺序查找和折半查找
- 查找:顺序查找,折半查找
- 静态查找表:顺序查找、折半查找、分块查找
- 静态查找表:顺序查找、折半查找、分块查找
- 静态查找:顺序查找和折半查找法
- win10 安装 .Net Framework 3.5 采用 netframework3.5.cab文件安装
- struts中使用servlet
- STL中的swap函数
- intValue()的用法,以及与parseInt()和valueOf 的区别
- Python中常见的异常(类)
- 顺序表查找和折半查找
- spring mvc学习的一点总结
- Matrix Calculus 学习笔记
- ml-预处理交叉检验
- 欢迎使用CSDN-markdown编辑器
- Windows7(MBR)与Ubuntu(GPT)双分区表grub引导被删除修复
- jdbc连接Oracle数据库实现学生管理系统(用数据库连接池支持多用户操作同一数据库)
- MapReduce基础知识梳理
- JS 自定义事件