博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
顺序查找 && 折半查找
阅读量:6887 次
发布时间:2019-06-27

本文共 1430 字,大约阅读时间需要 4 分钟。

顺序查找                                                            

算法描述

顺序比较即可。

平均查找长度

(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

折半查找                                                            

算法描述

限制:待查表必须是有序的向量(在内存中连续存储)

首先和数组中点比较,如果等于则返回,如果小于中点则在左边区间查找,如果大于中点则在右边区间查找。

平均查找长度

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){ 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://www.cnblogs.com/yydcdut/p/3681774.html,如需转载请自行联系原作者

你可能感兴趣的文章
建造模式
查看>>
BZOJ 4025: 二分图
查看>>
openNebula rgister img instance vms error collections
查看>>
error Infos
查看>>
PL/sql配置相关
查看>>
[New Portal]Windows Azure Virtual Machine (3) 在VM上挂载磁盘
查看>>
字体随着ProgressBar的加载而滚动
查看>>
Handler 机制再了解
查看>>
如果你是前端工程师,把你的网站或者你知道的网站加进来吧
查看>>
阿里云产品头条(2017年12月刊)
查看>>
探究SQL添加非聚集索引,性能提高几十倍之谜
查看>>
Java 如何不使用 volatile 和锁实现共享变量的同步操作
查看>>
追踪解析 Disruptor 源码
查看>>
【剑指offer】让抽象问题具体化
查看>>
聊聊flink的AbstractNonHaServices
查看>>
搭建一个通用的脚手架
查看>>
PAT A1071
查看>>
【笔记】重学前端-winter
查看>>
windows下重装xampp并做mysql数据迁移的步骤
查看>>
Java日志组件间关系
查看>>