第十四周项目1线性表的折半查找(循环法)

来源:互联网 发布:阿里百川是不是马云的 编辑:程序博客网 时间:2024/05/18 00:41
/*Copyright (c) 2015, 烟台大学计算机与控制工程学院* All rights reserved.* 文件名称:H1.cpp* 作者:辛志勐* 完成日期:2015年12月2日* 版本号:VC6.0* 问题描述:线性表的折半查找(循环法)* 输入描述:无* 程序输出:图的基本输出*/


#include <stdio.h>
#define MAXL 100
typedef int KeyType;
typedef char InfoType[10];
typedef struct
{
    KeyType key;                //KeyType为关键字的数据类型
    InfoType data;              //其他数据
} NodeType;
typedef NodeType SeqList[MAXL];     //顺序表类型


int BinSearch(SeqList R,int n,KeyType k)
{
    int low=0,high=n-1,mid;
    while (low<=high)
    {
        mid=(low+high)/2;
        if (R[mid].key==k)      //查找成功返回
            return mid+1;
        if (R[mid].key>k)       //继续在R[low..mid-1]中查找
            high=mid-1;
        else
            low=mid+1;          //继续在R[mid+1..high]中查找
    }
    return 0;
}


int main()
{
    int i,n=10;
    int result;
    SeqList R;
    KeyType a[]= {1,3,9,12,32,41,45,62,75,77},x=75;
    for (i=0; i<n; i++)
        R[i].key=a[i];
    result = BinSearch(R,n,x);
    if(result>0)
        printf("序列中第 %d 个是 %d\n",result, x);
    else
        printf("木有找到!\n");
    return 0;

}



知识点总结:使用循环将数组分成两半,取含有所要查找元素的那一段,依次去做直到查出。

学习心得:代码简短,知识原理容易理解。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 运动后呕吐应该怎么办 运动后吐了怎么办 剧烈运动后难受怎么办 泡澡后全身无力怎么办 运动后头晕是怎么办 颈椎运动后头晕怎么办 跑步之后浑身疼怎么办 运动后头疼恶心怎么办 减肥减的头晕怎么办 剧烈运动后眩晕怎么办 剧烈运动后头昏怎么办 锻炼完头晕恶心怎么办 没休息好头疼怎么办 人的体力不好怎么办 反胃怎么办 吃什么好 怀孕恶心想吐怎么办 nba篮球大师破产怎么办 记忆力差反应迟钝怎么办 脑子笨记性不好怎么办 产后脑子不好使怎么办 老人脑子不好使怎么办 脑子不好使怎么办搞笑 脑子不好使了怎么办 最近脑子不好使怎么办 感觉自己好笨没脑子怎么办 脑子浑浊不清晰怎么办 30岁体力下降怎么办 皮肤差毛孔粗大怎么办 最近身体素质越来越差怎么办 身体素质差容易感冒怎么办 易疲惫犯困体质怎么办 成年狗体力不行怎么办 累了体力不支怎么办 新兵连成绩不合格怎么办 征兵体检血压高怎么办 魔域手游幻兽亲密度过低怎么办 移动账号被锁定怎么办 魔域手游账号被冻结怎么办 魔域手游没用的装备怎么办 5173账号三年找回怎么办 电脑的任务栏不见了怎么办