美文网首页
数据结构实验——折半查找

数据结构实验——折半查找

作者: 秣禾 | 来源:发表于2020-06-02 12:13 被阅读0次

前子表查找:high=mid-1;
后子表查找:low=mid+1;
算法分析:
1.确定查找有序序列a,置查找区间初值,low为1,high为表长n。
2.当low小于等于high时,循环执行以下操作:
(1)mid取值为high和low的中间值;
(2)将查找值num与中间位置的关键字a[mid]进行比较,若相等则查找成功,输出查找值num在序列a中的位置mid;
(3)若查找值num小于中间位置a[mid],则进入前一子表中查找,high=mid-1;
(4)若查找值num大于中间位置a[mid],则进入后一子表中查找,low=mid+1;
3.循环结束,说明查找空间为空,则查找失败。
程序如下:

#include <stdio.h>
void main()
{
int a[20],num,low,high,mid,i,flag=0;
int n;
printf("请输入有序序列中的元素个数:");
scanf("%d",&n);
printf("请输入%d个有序元素:",n);
for(i=0;i<n;i++)
{
    scanf("%d",&a[i]);
}
printf("请输入要查找的数值:");
scanf("%d",&num);
low=1;
high=n;
while(low<=high)
{
    mid=(low+high)/2;
    printf("low=%d,mid=%d,high=%d\n",low,mid,high);
    if(a[mid]>num)
{
    high=mid-1;//将在前子表中查找
}
if(a[mid]<num)
{
    low=mid+1;//将在后子表中查找
}
if(a[mid]==num)
{
    flag=1;
    break;
}
}
if(flag)
{

    printf("found!\n");
    printf("%d是此序列中的第%d个元素\n",num,mid+1);
    }
    else
    {
        printf("not found!\n");
    }

}
折半查找.png

相关文章

  • 数据结构实验——折半查找

    前子表查找:high=mid-1;后子表查找:low=mid+1;算法分析:1.确定查找有序序列a,置查找区间初值...

  • 数据结构_查找_折半/插入/斐波那契

    数据结构_查找_折半/插入/斐波那契 这三种查找算法都是在数据列有序的前提下进行的 折半查找 对于n个元素的数据列...

  • 算法:二分法查找(折半查找法)

    算法:二分法查找(折半查找法) 这是最经典的折半查找,而在面试的时候往往会对某些经典的数据结构和算法进行魔改,这道...

  • 【爬虫】数据结构实现折半查找的算法

    数据结构实现折半查找的算法 折半查找技术,也就是二分查找,通常称为二分法查找。它的前期是线性表中的记录必须是关键码...

  • PHP查找算法

    静态查找 顺序查找 折半查找 递归折半查找

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 算法(一)查找算法 平衡二叉树,红黑树,B树等

    顺序查找 略 折半查找 折半查找,也称二分查找,在某些情况下,折半查找比顺序查找效率更高(要求静态查找表中数据必须...

  • C语言折半查找

    折半查找 折半查找的注意点折半查找只能查找有序数组的值 折半查找的逻辑1.把数组第一个元素的索引作为最小值,最后一...

  • 查找算法

    1.顺序查找法 改进后的顺序查找法 2.折半查找法 3.插值查找 插值查找其实是折半查找的升级版,在我们写折半查找...

  • 重温数据结构_树表的查找

    线性表的查找的顺序查找和折半查找作为查找表的组织形式,其中折半查找效率较高。但由于折半查找要求表中记录按关键字有序...

网友评论

      本文标题:数据结构实验——折半查找

      本文链接:https://www.haomeiwen.com/subject/zlcuzhtx.html