在C语言中使用二分法算法思想解决猜商品价格问题
电视抽奖活动中,根据主持人给出的提示(高了还是低了),观众在规定时间内猜中该商品价格即可获得该商品
所谓的二分查找法,其实是一种有序的查找方法,也称折半查找(Binary Search),如果是无序的则要先进行排序操作。基本思想是:目标值通过与中间元素比较,可分为三种情况:
第一种情况:目标值与中间元素相等,查找结束;
第二种情况:目标值比中间元素大,则把后半部分的中间元素与目标值比较;
第二种情况:目标值比中间元素小,则把前半部分的中间元素与目标值比较;
这三步一直循环,直到查找结束。
效果如下:
代码如下:
//
// main.c
// 数据结构
//
// Created by ylb on 2019/3/27.
// Copyright © 2019 ylb. All rights reserved.
//
#include <stdio.h>
int main() {
int oldprice,price=0,i=0;
printf("请先设置商品的真实价格:");
scanf("%d",&oldprice);
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 次",i);
}
}
return 0;
}