看商品猜价格:二分法查找 .

实例:看商品猜价格

首先出示一件价格在99元以内的商品,参与者要猜出这件商品的价格。在猜价格的过程中,主持人会根据参与者给出的价格,相应地给出“高了”或“低了”的提示。


如果商品的价格是40

二分法猜商品价格:

  

次数

价格区间

中间值

 

第 1 次

0~99

50

高了

第 2 次

0~50

25

低了

第 3 次

25~50

≈38

低了

第 4 次

38~50

42

高了

第 5 次

38~42

40

正好

 

                       

每次都取两个数中间的数,把这个数和最终的数相比较,通过这样的比较,缩小查找的范围,找到最终要找的数。


代码实现:

  1. #include <iostream>    
  2. #include <stdlib.h>   
  3. int main()  
  4. {  
  5.      int oldprice,price=0,i=0;   //oldprice实际商品的价格,price游戏参与者猜的价格 ,i猜的次数    
  6.      printf("请首先设置商品的真实价格:");    
  7.      scanf("%d",&oldprice);  
  8.      system("cls");  //清屏    
  9.      printf("请输入试猜的价格:\n");  
  10.      while(oldprice!=price)  //实际价格和参与者价格不同,继续循环    
  11.      {  
  12.         i++;  
  13.         printf("参与者:");   
  14.         scanf("%d",&price);  
  15.         printf("主持人:") ;  
  16.         if(price>oldprice)  
  17.         {  
  18.             printf("高了\n");                    
  19.         }  
  20.         else if(price<oldprice)  
  21.         {  
  22.             printf("低了\n");  
  23.         }  
  24.         else  
  25.         {  
  26.             printf("恭喜你,答对了,该商品属于你了!\n\n你一共试猜了%d次.\n",i);  
  27.         }          
  28.      }  
  29.      system ("pause");//输出完结果后停在控制台   
  30.      return 0;      
  31. }  
#include <iostream> 
#include <stdlib.h>
int main()
{
     int oldprice,price=0,i=0;   //oldprice实际商品的价格,price游戏参与者猜的价格 ,i猜的次数 
     printf("请首先设置商品的真实价格:");  
     scanf("%d",&oldprice);
     system("cls");  //清屏 
     printf("请输入试猜的价格:\n");
     while(oldprice!=price)  //实际价格和参与者价格不同,继续循环 
     {
        i++;
        printf("参与者:"); 
        scanf("%d",&price);
        printf("主持人:") ;
        if(price>oldprice)
        {
            printf("高了\n");                  
        }
        else if(price<oldprice)
        {
            printf("低了\n");
        }
        else
        {
            printf("恭喜你,答对了,该商品属于你了!\n\n你一共试猜了%d次.\n",i);
        }        
     }
     system ("pause");//输出完结果后停在控制台
     return 0;    
}

结果:

      


二分法可以这么理解:有一块蛋糕,蛋糕上面有一颗草莓,现在要找到这颗草莓的具体,我们先把蛋糕分为两块,在这两块中查找,再将有草莓的那块分为两块,继续这样分下去,最终确定草莓的具体位置(这里是等分为两块,这个例子也可以说的分块查找,但是分块查找与二分法不等价)

 

二分法查找要求线性表是有序表,即表中结点按关键字有序。只适用于顺序存储结构。二分法查找为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。所以二分法查找特别适用于一经建立就很少改动,但又经常需要查找的线性表。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值