亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

(壹)二分查找

??  1.1  何為二分查找

折半查找,也稱二分查找,在某些情況下相比于順序查找,使用折半查找算法的效率更高。但是該算法的使用的前提是靜態(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ù)列的一半,直到找到相等元素的位置或者最終沒有找到要找的元素。

動(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)文章

  • vs2022?qt環(huán)境搭建調(diào)試的方法步驟

    vs2022?qt環(huán)境搭建調(diào)試的方法步驟

    最近net6和vs2022發(fā)布,本文就詳細(xì)的介紹一下vs2022?qt環(huán)境搭建調(diào)試的方法步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • C語(yǔ)言 一級(jí)指針與二級(jí)指針詳細(xì)介紹

    C語(yǔ)言 一級(jí)指針與二級(jí)指針詳細(xì)介紹

    這篇文章主要介紹了C語(yǔ)言 一級(jí)指針與二級(jí)指針詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • C++強(qiáng)制轉(zhuǎn)換與智能指針示例詳解

    C++強(qiáng)制轉(zhuǎn)換與智能指針示例詳解

    這篇文章主要介紹了C++強(qiáng)制轉(zhuǎn)換與智能指針示例,智能指針(Smart Pointer)是一種抽象的數(shù)據(jù)類型。在程序設(shè)計(jì)中,它通常是經(jīng)由類模板來實(shí)現(xiàn),借由模板來達(dá)成泛型,借由類別的析構(gòu)函數(shù)來達(dá)成自動(dòng)釋放指針?biāo)赶虻拇鎯?chǔ)器或?qū)ο?/div> 2022-11-11
  • C語(yǔ)言lseek()函數(shù)詳解

    C語(yǔ)言lseek()函數(shù)詳解

    這篇文章主要介紹了C語(yǔ)言lseek()函數(shù)詳解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方

    這篇文章主要介紹了零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方,文中講解非常細(xì)致,供大家參考和學(xué)習(xí),想要學(xué)習(xí)C/C++的可以閱讀此文
    2020-06-06
  • 求數(shù)組中最長(zhǎng)遞增子序列的解決方法

    求數(shù)組中最長(zhǎng)遞增子序列的解決方法

    本篇文章是對(duì)c++中求數(shù)組中最長(zhǎng)遞增子序列的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++ 系統(tǒng)String類詳解

    C++ 系統(tǒng)String類詳解

    這篇文章主要介紹了C++的系統(tǒng)String類,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • C++學(xué)習(xí)之多態(tài)的使用詳解

    C++學(xué)習(xí)之多態(tài)的使用詳解

    這篇文章主要為大家詳細(xì)介紹了C++中多態(tài)的機(jī)制以及使用,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C++有一定的幫助,感興趣的可以了解一下
    2022-06-06
  • C++實(shí)現(xiàn)LeetCode(110.平衡二叉樹)

    C++實(shí)現(xiàn)LeetCode(110.平衡二叉樹)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(110.平衡二叉樹),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 詳解C/C++中的select、poll和epoll

    詳解C/C++中的select、poll和epoll

    本文通過示例介紹了C/C++中的select、poll和epoll知識(shí),結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-06-06

最新評(píng)論