数据结构之查找

http://www.bjfuacm.com/problem/287/

#include<iostream>
using namespace std;
#define OK 1
#define MAXSIZE 10000
typedef int Status;
typedef int ElementType;
typedef int KeyType;
typedef struct
{
    ElementType *data;
    int length;
}SqList;
Status InitList(SqList &L)
{
    L.data=new int(MAXSIZE);
    L.length=0;
    return OK;
}
int Search_Seq(SqList ST)
{
    int i;
    for(i=ST.length;ST.data[i]!=ST.data[0];i--);
    return i;
}
int main()
{
    int n;
    while(cin>>n&&n!=0)
    {
        SqList L;
        InitList(L);
        L.length=n;
        for(int i=1;i<=n;i++)
            cin>>L.data[i];
        cin>>L.data[0];
        if(Search_Seq(L))
            cout<<"YES"<<endl;
        else
            cout<<"NO";
    }
    return 0;
}

基于递归的折半查找
发布时间: 2017年9月18日 10:52 最后更新: 2017年9月18日 11:43 时间限制: 1000ms 内存限制: 128M

描述
请编写一个递归的折半查找算法,查找给定有序数组中的某一元素。

输入
多组数据,每组数据有三行。第一行为数组长度n,第二行为n个递增排列的数字,第三行为需要查找的数字k。当n=0时输入结束。

输出
每组数据输出一行,如果可以找到数字,则输出“YES”,否则输出“NO”。

样例输入1
5
1 4 6 7 8
6
6
1 2 5 7 9 100
8
0
样例输出1
YES
NO

#include<iostream>
using namespace std;
#define OK 1
#define MAXSIZE 10000
typedef int Status;
typedef int ElementType;
typedef int KeyType;
typedef struct
{
    ElementType *data;
    int length;
}SqList;
Status InitList(SqList &L)
{
    L.data=new int(MAXSIZE);
    L.length=0;
    return OK;
}
int Search_Seq(SqList ST)
{
    int i;
    for(i=ST.length;ST.data[i]!=ST.data[0];i--);
    return i;
}
int Search_Bin(SqList L,int low,int high)
{
    int mid=(low+high)>>1;
    if(low==high)
    {
        return 0;
    }
    else if(L.data[mid]==L.data[0])
    {
        return mid;
    }
    else
    {
        if(L.data[0]<L.data[mid])
        {
            Search_Bin(L,low,mid-1);
        }
        else
        {
            Search_Bin(L,mid+1,high);
        }
    }

}
int main()
{
    int n;
    while(cin>>n&&n!=0)
    {
        SqList L;
        InitList(L);
        L.length=n;
        for(int i=1;i<=n;i++)
            cin>>L.data[i];
        cin>>L.data[0];
        if(Search_Bin(L,1,L.length))
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 数据结构之查找 查找概论 查找表 定义 查找表(Search Table)是同一类型的数据元素(或记录)的集合。 ...
    刚刚悟道阅读 4,074评论 0 3
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,638评论 0 13
  • 时间真是一头猛兽, 它追着我要撕扯我的伤口, 去回忆那些血淋淋的曾经。
    陈一岁阅读 233评论 0 0
  • 子侄婚庆,欣然亲赴,沽酒吟哦,赋诗相贺,诚祝新人,相亲相爱,百年好合! 雪是婚纱的独白 酒是婚姻的色彩 音乐是新人...
    宏波_阅读 566评论 0 2
  • 我们总是高估短期收益,低估长期收益。 1、感谢你,丈母娘! 月初,我参加了一个婚礼,想起了凯恩斯。 看来,不是每次...
    你先走阅读 701评论 2 11

友情链接更多精彩内容