| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 708 人关注过本帖
标题:【求助】二分检索法(递归)查找一张扑克牌
只看楼主 加入收藏
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
结帖率:100%
收藏
已结贴  问题点数:15 回复次数:5 
【求助】二分检索法(递归)查找一张扑克牌
请教各位前辈,如何设计一个用二分检索方法查找一张扑克牌的C语言程序?(已给出主函数里面的扑克牌)谢谢!
二分检索法:当一个数据序列已经有序时,采用折半检索可以提高检索效率,即假如有序序列中的第一个元素或最后一个元素是要检索的数据,则输出该元素;否则就对1/2出的元素进行测试,若该处的元素是被检索数据,就输出该元素;否则,根据被检索元素是大于还是小于该元素确定新的二分检索区间,重新进行二分检索,该过程是递归的。
主函数:
int main(void)
{
    int i,j,card[54],t;
    for(i=0;i<4;i++)
    {
        for(j=0;j<13;j++)
            card[i*13+j]=100*(i+1)+j+1;
    }
    card[52]=501;
    card[53]=502;
    for(i=0;i<54;i++)
        printf("card[%d]=%d\t",i,card[i]);
    printf("\n");
    printf("请输入要查找的牌:");
    scanf("%d",&t);
    return 0;
}

[ 本帖最后由 mandown1991 于 2011-5-17 14:01 编辑 ]
搜索更多相关主题的帖子: 扑克牌 C语言 元素 
2011-05-17 12:54
月如水0
Rank: 2
等 级:论坛游民
帖 子:29
专家分:76
注 册:2011-5-8
收藏
得分:5 
刚学完数据结构,还是不怎么懂
2011-05-17 13:01
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
收藏
得分:5 
2aircrack ng
2011-05-17 14:14
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
回复 3楼 lucky563591
请问是什么意思??
2011-05-17 17:04
smallkid190
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:134
专家分:969
注 册:2011-4-23
收藏
得分:5 
这是我做的...你可以参考下的...都差不多..只是有点问题...
#include<stdio.h>
int main()
{
    /*p[]:表示数组,i:表示数组开始元素下标,j:表示数组结束元素下标,key:表示查找的元素*/
    int half(int p[],int i,int j,int key);        
    int x,key,a[54]={101,102,103,104,105,106,107,108,109,110,111,112,113,
                201,202,203,204,205,206,207,208,209,210,211,212,213,
                301,302,303,304,305,306,307,308,309,310,311,312,313,
                401,402,403,404,405,406,407,408,409,410,411,412,413,
                501,502};
    printf("请输入要找的牌:");
    scanf("%d",&x);
    key=half(a,0,53,x);
    if(key==-1)
        printf("找不到要找的牌\n");
    else
        printf("要找的牌是第%d张牌\n",key+1);
    return 0;
}

int half(int p[],int i,int j,int key)
{
    int mid=0;                      /*mid:为对比的中间数*/
    if((key==p[0])||(key==p[53]))   /*如果查找的是第一张或最后一张则直接输出*/
    {
        if(key==p[0]) return 0;
        else if(key==p[53]) return 53;
        else return -1;
    }
    else
    {                                /*进行折半查找的递归程序*/
        mid=(i+j)/2;                 /*如果查找的是中间数则直接输出*/
        if(key<*(p+mid)) return half(p,i,mid,key);
        else if(key>*(p+mid)) return half(p,mid,j,key);
        else return mid;
    }
    return 0;
}
我怎么觉得你看的是张基温写的书啊...以前看你给的题目他的书都有...

不懂就是不懂...
2011-05-17 18:15
mandown1991
Rank: 4
等 级:业余侠客
帖 子:262
专家分:252
注 册:2011-3-2
收藏
得分:0 
回复 5楼 smallkid190
我们的教材是他编的!
2011-05-17 23:08
快速回复:【求助】二分检索法(递归)查找一张扑克牌
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015050 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved