
C 语言顺序表查找和折半查找
发布日期:2021-05-08 03:48:59
浏览次数:9
分类:精选文章
本文共 784 字,大约阅读时间需要 2 分钟。
顺序查找
查找最好的情况是在第一个位置找到了,算法时间复杂度为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;}
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月19日 13时17分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
实现一个简易Vue(三)Compiler
2021-05-07
仿小米商城(上)
2021-05-07
【30】kotlin 闭包
2021-05-07
自动安装服务2
2021-05-07
js的各种数据类型判断(in、hasOwnProperty)
2021-05-07
严格模式、混杂模式与怪异模式
2021-05-07
HTML 和 CSS 简单实现注册页面
2021-05-07
(SpringMVC)springMVC.xml 和 web.xml
2021-05-07
(LeetCode)Java 求解搜索旋转排序数组
2021-05-07
DP - Tickets - HDU - 1260
2021-05-07
Spring 与使用STOMP消息
2021-05-07
Java Swing JList:列表框组件
2021-05-07
jQuery中的动画
2021-05-07
狂神说MySQL01:初识MySQL
2021-05-07
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
2021-05-07
光环和你一起迎接改版
2021-05-07
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2021-05-07
LeetCode - 5. 最长回文子串——字符串、动态规划
2021-05-07
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
2021-05-07