顺序查找 && 折半查找
顺序查找
算法描述
顺序比较即可。
平均查找长度
(n+1)/2, 其中n为表长。
时间复杂度
O(n)
#include "stdio.h" typedef struct student{ int id; /*学生编号*/ char name[10]; /*学生姓名*/ float score; /*成绩*/ }Student; int search(Student stu[],int n,int key){ int i; for(i=0; i<n; i++) if( stu[i].id == key ) /*查找成功*/ return i; return -1; /*查找失败*/ } void main() { Student stu[4] = {{1004,"TOM",100} , {1002,"LILY",95}, {1001,"ANN",93}, {1003,"LUCY",98} }; /*初始化结构体数组*/ int addr; /*要查找的记录的地址*/ addr = search(stu,4,1003); printf("Student ID: %d\n",stu[addr].id); /*输出查找到的记录的信息*/ printf("Student name: %s\n",stu[addr].name); printf("Student score: %f\n",stu[addr].score); }
折半查找
算法描述
限制:待查表必须是有序的向量(在内存中连续存储)
首先和数组中点比较,如果等于则返回,如果小于中点则在左边区间查找,如果大于中点则在右边区间查找。
平均查找长度
lg(n+1)
#include "stdio.h" bin_search(int A[],int n,int key){ int low,high,mid; low = 0; high = n-1;//因为从0开始,所以减1 while(low<=high) { mid = (low + high)/2;//从中间开始找,先找出中间的数为多少 if(A[mid]==key)return mid; /*查找成功,返回mid*/ if(A[mid]<key){ low = mid + 1; /*在后半序列中查找*/ } if(A[mid]>key){ high = mid - 1; /*在前半序列中查找*/ } } return -1; /*查找失败,返回-1*/ } main() { int A[10] = {2,3,5,7,8,10,12,15,19,21},i,n ,addr; printf("The contents of the Array A[10] are\n"); for(i=0;i<10;i++) printf("%d ",A[i]); /*显示数组A中的内容*/ printf("\nPlease input a interger for search\n"); scanf("%d",&n); /*输入待查找的元素*/ addr = bin_search(A,10,n); /*折半查找,返回该元素在数组中的下标*/ if(-1 != addr) /*查找成功*/ printf("%d is at the %dth unit is array A\n ",n,addr); else printf("There is no %d in array A\n",n); /*查找失败*/ }
作者:我爱物联网
出处:http://yydcdut.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://yydcdut.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?