最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言巧用二分查找實(shí)現(xiàn)猜數(shù)游戲

 更新時(shí)間:2022年02月09日 10:41:20   作者:玄澈_  
二分查找也稱(chēng)折半查找(Binary?Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲(chǔ)結(jié)構(gòu),而且表中元素按關(guān)鍵字有序排列,本篇文章教你用二分查找編寫(xiě)猜數(shù)字游戲

?? 文章Gitee倉(cāng)庫(kù):文章源代碼

(壹)二分查找

??  1.1  何為二分查找

折半查找,也稱(chēng)二分查找,在某些情況下相比于順序查找,使用折半查找算法的效率更高。但是該算法的使用的前提是靜態(tài)查找表中的數(shù)據(jù)必須是有序的。

例如,在{5,21,13,19,37,75,56,64,88 ,80,92}這個(gè)查找表使用折半查找算法查找數(shù)據(jù)之前,需要首先對(duì)該表中的數(shù)據(jù)按照所查的關(guān)鍵字進(jìn)行排序:{5,13,19,21,37,56,64,75,80,88,92}。

??  1.2  二分查找的原理

以升序數(shù)列為例,比較一個(gè)元素與數(shù)列中的中間位置的元素的大小,如果比中間位置的元素大,則繼續(xù)在后半部分的數(shù)列中進(jìn)行二分查找;如果比中間位置的元素小,則在數(shù)列的前半部分進(jìn)行比較;如果相等,則找到了元素的位置。每次比較的數(shù)列長(zhǎng)度都會(huì)是之前數(shù)列的一半,直到找到相等元素的位置或者最終沒(méi)有找到要找的元素。

動(dòng)圖演示:(于順序查找相比較)

?

??  1.3  查找條件

二分查找的前提條件是有序數(shù)列,普通查找則不需要。

查找到返回該元素的下標(biāo),否則返回-1。

普通查找的時(shí)間復(fù)雜度為O(N), 二分查找的時(shí)間復(fù)雜度為O(logN)。 N/2/2···/2=1,2^m=N(m為折半查找的次數(shù)),那么m=log(N),二分查找的時(shí)間復(fù)雜度就為O(logN)。

??  1.4  代碼實(shí)現(xiàn)

?? 1.4.1  初始化數(shù)據(jù)

?? 1.4.2  核心函數(shù)

(貳)猜數(shù)字游戲 

??  2.1  菜單初始化

??  2.2  核心函數(shù)

??  2.3  main函數(shù)

??  2.4  總代碼

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void menu()
{
	printf("**********************************\n");
	printf("*********** 1.play     ***********\n");
	printf("*********** 0.exit     ***********\n");
	printf("**********************************\n");
}
 
//RAND_MAX--rand函數(shù)能返回隨機(jī)數(shù)的最大值。
void game()
{
	int random_num = rand() % 100 + 1;
	int input = 0;
	while (1)
	{
		printf("請(qǐng)輸入猜的數(shù)字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
			printf("猜大了\n");
		}
		else if (input < random_num)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜對(duì)了\n"); break;
		}
	}
}
 
int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		menu();
		printf("請(qǐng)選擇>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("選擇錯(cuò)誤,請(qǐng)重新輸入!\n");
			break;
		}
	} while (input);
	return 0;
}

到此這篇關(guān)于C語(yǔ)言巧用二分查找實(shí)現(xiàn)猜數(shù)游戲 的文章就介紹到這了,更多相關(guān)C語(yǔ)言 二分查找內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vscode 配置 C/C++編譯環(huán)境(完整教程)

    vscode 配置 C/C++編譯環(huán)境(完整教程)

    這篇文章主要介紹了vscode 配置 C/C++編譯環(huán)境(完整教程),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié)

    C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié)

    這篇文章主要介紹了C語(yǔ)言中一些將字符串轉(zhuǎn)換為數(shù)字的函數(shù)小結(jié),分別為atoi()函數(shù)和atol()函數(shù)以及atof()函數(shù),需要的朋友可以參考下
    2015-08-08
  • C++探索構(gòu)造函數(shù)私有化會(huì)產(chǎn)生什么結(jié)果

    C++探索構(gòu)造函數(shù)私有化會(huì)產(chǎn)生什么結(jié)果

    C++的構(gòu)造函數(shù)的作?:初始化類(lèi)對(duì)象的數(shù)據(jù)成員。即類(lèi)的對(duì)象被創(chuàng)建的時(shí)候,編譯系統(tǒng)對(duì)該對(duì)象分配內(nèi)存空間,并?動(dòng)調(diào)?構(gòu)造函數(shù),完成類(lèi)成員的初始化。構(gòu)造函數(shù)的特點(diǎn):以類(lèi)名作為函數(shù)名,?返回類(lèi)型
    2022-05-05
  • 《C++ Primer》隱式類(lèi)類(lèi)型轉(zhuǎn)換學(xué)習(xí)整理

    《C++ Primer》隱式類(lèi)類(lèi)型轉(zhuǎn)換學(xué)習(xí)整理

    在本篇文章里小編給大家整理的是關(guān)于《C++ Primer》隱式類(lèi)類(lèi)型轉(zhuǎn)換學(xué)習(xí)筆記內(nèi)容,需要的朋友們參考下。
    2020-02-02
  • C語(yǔ)言實(shí)現(xiàn)控制臺(tái)掃雷小游戲

    C語(yǔ)言實(shí)現(xiàn)控制臺(tái)掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)控制臺(tái)掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++?構(gòu)造函數(shù)學(xué)習(xí)筆記

    C++?構(gòu)造函數(shù)學(xué)習(xí)筆記

    這篇文章主要為大家介紹了C++?構(gòu)造函數(shù)學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • Qt將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出為html

    Qt將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出為html

    這篇文章主要為大家詳細(xì)介紹了Qt如何實(shí)現(xiàn)將數(shù)據(jù)庫(kù)中的數(shù)據(jù)導(dǎo)出為html,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-12-12
  • C++基于reactor的服務(wù)器百萬(wàn)并發(fā)實(shí)現(xiàn)與講解

    C++基于reactor的服務(wù)器百萬(wàn)并發(fā)實(shí)現(xiàn)與講解

    這篇文章主要介紹了C++基于reactor的服務(wù)器百萬(wàn)并發(fā)實(shí)現(xiàn)與講解,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 詳解C++ 創(chuàng)建文件夾的四種方式

    詳解C++ 創(chuàng)建文件夾的四種方式

    這篇文章主要介紹了C++ 創(chuàng)建文件夾的四種方式,本文示例都是在 E:\database 路徑下創(chuàng)建一個(gè)叫做 testFolder 的文件夾,文章通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-11-11
  • Qt實(shí)現(xiàn)棋盤(pán)游戲

    Qt實(shí)現(xiàn)棋盤(pán)游戲

    這篇文章主要為大家詳細(xì)介紹了Qt實(shí)現(xiàn)棋盤(pán)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論

伊金霍洛旗| 丰县| 财经| 抚州市| 华坪县| 崇信县| 钟山县| 台州市| 新巴尔虎左旗| 崇礼县| 乌兰浩特市| 镇雄县| 二连浩特市| 武乡县| 阿拉善盟| 潍坊市| 兰坪| 米脂县| 宜春市| 遵化市| 高平市| 佛坪县| 乐安县| 措美县| 新绛县| 房产| 宁河县| 汕头市| 灵石县| 岗巴县| 龙海市| 浠水县| 武强县| 丁青县| 荣成市| 宣威市| 普定县| 仲巴县| 道真| 精河县| 喜德县|