《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生

简介: 《C游记》 番外篇(壹)二分查找显神威 猜数游戏趣味生

1.gif

目录

(壹)二分查找

📚  1.1  何为二分查找

📚  1.2  二分查找的原理

📚  1.3  查找条件

📚  1.4  代码实现

(贰)猜数字游戏

📚  2.1  菜单初始化

📚  2.2  核心函数

📚  2.3  main函数

📚  2.4  总代码


✨✨ 文章Gitee仓库:CSDN_C游记_玄澈: 《C游记》博客文章源代码


(壹)二分查找

📚  1.1  何为二分查找

折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的

例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半查找算法查找数据之前,需要首先对该表中的数据按照所查的关键字进行排序:{5,13,19,21,37,56,64,75,80,88,92}

📚  1.2  二分查找的原理

升序数列为例,比较一个元素与数列中的中间位置的元素的大小如果比中间位置的元素大,则继续在后半部分的数列中进行二分查找;如果比中间位置的元素小,则在数列的前半部分进行比较;如果相等,则找到了元素的位置。每次比较的数列长度都会是之前数列的一半,直到找到相等元素的位置或者最终没有找到要找的元素。

动图演示:(于顺序查找相比较)2.gif

📚  1.3  查找条件

二分查找的前提条件是有序数列,普通查找则不需要。

查找到返回该元素的下标,否则返回-1。

普通查找的时间复杂度为O(N), 二分查找的时间复杂度为O(logN)。

N/2/2···/2=1,2^m=N(m为折半查找的次数),那么m=log(N),二分查找的时间复杂度就为O(logN)。


📚  1.4  代码实现3.gif



🎨  1.4.1  初始化数据

1.png


 🎨  1.4.2  核心函数2.png4.gif

(贰)猜数字游戏

📚  2.1  菜单初始化3.png


📚  2.2  核心函数4.png


📚  2.3  main函数5.png


📚  2.4  总代码

#include <stdio.h>#include <time.h>#include <stdlib.h>voidmenu()
{
printf("**********************************\n");
printf("*********** 1.play     ***********\n");
printf("*********** 0.exit     ***********\n");
printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。voidgame()
{
intrandom_num=rand() %100+1;
intinput=0;
while (1)
    {
printf("请输入猜的数字>:");
scanf("%d", &input);
if (input>random_num)
        {
printf("猜大了\n");
        }
elseif (input<random_num)
        {
printf("猜小了\n");
        }
else        {
printf("恭喜你,猜对了\n"); break;
        }
    }
}
intmain()
{
intinput=0;
srand((unsigned)time(NULL));
do    {
menu();
printf("请选择>:");
scanf("%d", &input);
switch (input)
        {
case1:
game();
break;
case0:
break;
default:
printf("选择错误,请重新输入!\n");
break;
        }
    } while (input);
return0;
}

6.gif7.gif

目录
相关文章
|
9月前
|
算法
【随想】每日两题Day.9
【随想】每日两题
47 1
|
9月前
【随想】每日两题Day.6
【随想】每日两题
36 0
|
9月前
|
数据安全/隐私保护
【随想】每日两题Day.14
【随想】每日两题Day.14
42 0
|
9月前
|
机器学习/深度学习 NoSQL Shell
【随想】每日两题Day.13
【随想】每日两题Day.13
36 0
|
9月前
【随想】每日两题Day.2
随想】每日两题Day.2
29 0
|
9月前
|
存储
【随想】每日两题Day.21
【随想】每日两题Day.21
54 0
|
9月前
|
算法
【随想】每日两题Day.1
【随想】每日两题Day.1
45 0
|
9月前
|
算法
【随想】每日两题Day.15
【随想】每日两题Day.15
49 0
|
9月前
【随想】每日两题Day.19
【随想】每日两题Day.19
52 0
|
9月前
【随想】每日两题Day.12
【随想】每日两题Day.12
36 0