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

C語言編程之初識數(shù)組線性查找和二分查找

 更新時間:2021年09月17日 14:43:02   作者:Booksort  
本篇文章是C語言編程篇,主要為大家介紹C語言編程中數(shù)組的線性查找及二分查找分析講解,有需要的朋友可以借鑒參考下,希望可以有所幫助

先來了解一下什么是查找,
額,好吧,這沒什么可了解的,
就是查找數(shù)組中的某個元素的位置或是否存在。
就這,沒了。直接了解查找算法吧。

線性查找

線性查找與二分查找有些差別。
數(shù)組內(nèi)元素可以是混亂無序的,即沒有按順序儲存。這方法很簡單,就是從首元素開始,依此向后查找,比較。僅此而已。運用循環(huán),依次對比。
看代碼吧。

#include <stdio.h>
int main(void)
{
	int arr[] = { 5,4,6,8,7,9,10,2,3,1 };
	int len = sizeof(arr) / sizeof(arr[0]);//計算數(shù)組的元素個數(shù)
	int i;
	int n;
	scanf("%d", &n);//輸入要查找的元素
	for (i = 0; i < len; i++)
	{
		if (arr[i] == n)
		{
			printf("%d的下標(biāo)是%d\n", n, i);
			break;//找到后就直接跳出循環(huán)
		}
	}
	if (i == len)//因為如果數(shù)組元素全部遍歷一遍后,都沒有i++等于len后,便跳出循環(huán)再判斷說不存在。
		printf("Don't have number %d\n", n);	
	return 0;
}

線性查找非常簡單但,要是數(shù)組元素較大,就比較麻煩,畢竟要一個個遍歷過去時間復(fù)雜度為n。

二分查找

來看看二分查找,就是高中數(shù)學(xué)學(xué)到過的二分法,原理相當(dāng)簡單。但是它只能查找已經(jīng)排序好的數(shù)組,與線性查找相比,有些局限性。
通過比較數(shù)組中間數(shù)據(jù)與目標(biāo)數(shù)據(jù)的大小,來判斷是在中間數(shù)據(jù)的左邊還是右邊,瞬間縮小一半的運算量。再按照這種繼續(xù)比較,直到找到或找不到為止。

#include <stdio.h>
int main(void)
{
	int n;
	scanf("%d", &n);
	int arr[] = { 1,2,3,4,5,6,7,8,9,10};
	int len = sizeof(arr) / sizeof(arr[0]);
	int left = 0;
	int right = len - 1;
	int mid;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > n)
		{
			right = mid-1;
		}
		else if (arr[mid] < n)
		{
			left = mid+1;
		}
		else 
		{
			break;
		}
	}
	if (left <= right)
		printf("%d的下標(biāo)是%d\n", n, mid);
	else 
		printf("DON't have number %d\n", n);
	return 0;
}
	/*int i = 1;

看張圖吧,方便理解與記憶。

在這里插入圖片描述

看代碼中的,中間元素是5,在5的右邊,再把不需要的元素移出比較范圍,再,重新設(shè)置中間元素,進(jìn)行比較。

在這里插入圖片描述

再拿8進(jìn)行比較,在8左邊。重新規(guī)劃范圍。

在這里插入圖片描述

7比6大,則在6右邊,繼續(xù)比較。

在這里插入圖片描述

此時,left==right,跟據(jù)while循環(huán)條件,依舊可以進(jìn)入循換,但arr[mid]7,說明已經(jīng)找到那個元素,會break;跳出循環(huán),再判斷條件滿足left<=right,說明依舊成立,就輸出。
否則,如果目標(biāo)元素是11,則一直會是中間元素的右邊。

在這里插入圖片描述

再left=MID+1就是10,此時,leftright,循環(huán)還沒結(jié)束,這一次,mid等于10還是比11小,left=10+1,而此時,left>right,不符合條件,循環(huán)結(jié)束,再判斷,不符合條件,就進(jìn)入else,,說明,11不在數(shù)組內(nèi)。
我第一次寫二分查找時,沒有寫

left = mid+1;
right = mid-1;

而是寫

right = mid;
left = mid;

本以為差不多,額,事實上確實差不多,不過當(dāng)目標(biāo)數(shù)據(jù)不在數(shù)組內(nèi)時,要提前判斷。如果直接以上面代碼的形式,改條件,就會造成,left一直是9,right一直是10,mid也一直是9,無法跳出循環(huán),造成這樣的死循環(huán)局面。
當(dāng)寫二分查找時一定要切記。
這兩個查護(hù),目前就這些。
如有問題,煩請大佬指點一二。
謝謝觀看。

以上就是C語言編程之初識數(shù)組線性查找和二分查找的詳細(xì)內(nèi)容,更多關(guān)于C語言數(shù)組的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MFC LoadImage用法案例詳解

    MFC LoadImage用法案例詳解

    這篇文章主要介紹了MFC LoadImage用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 詳解C語言中的符號常量、變量與算術(shù)表達(dá)式

    詳解C語言中的符號常量、變量與算術(shù)表達(dá)式

    這篇文章主要介紹了C語言中的符號常量、變量與算術(shù)表達(dá)式,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-11-11
  • C/C++?for?語句的要點與注意事項小結(jié)

    C/C++?for?語句的要點與注意事項小結(jié)

    C/C++ 中的?for?語句是一種常用的循環(huán)結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼,直到滿足某個條件為止,這篇文章主要介紹了C/C++?for?語句的要點與注意事項,需要的朋友可以參考下
    2024-06-06
  • C語言?const修飾普通變量和指針的操作代碼

    C語言?const修飾普通變量和指針的操作代碼

    這篇文章主要介紹了C語言const修飾普通變量和指針,用const修飾普通變量時,是在語法層面限制了變量的修改,但是本質(zhì)上,變量還是變量,是一種不能被修改的變量,本文通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • 使用C++模擬實現(xiàn)2024春晚劉謙魔術(shù)

    使用C++模擬實現(xiàn)2024春晚劉謙魔術(shù)

    劉謙在2024年春晚上的撕牌魔術(shù)的數(shù)學(xué)原理非常簡單,所以這篇文章主要為大家詳細(xì)介紹了如何使用C++模擬實現(xiàn)這一魔術(shù)效果,感興趣的可以了解下
    2024-02-02
  • 用C語言求冪函數(shù)和指數(shù)函數(shù)的方法

    用C語言求冪函數(shù)和指數(shù)函數(shù)的方法

    這篇文章主要介紹了用C語言求冪函數(shù)和指數(shù)函數(shù)的方法,即pow()函數(shù)和sqrt()函數(shù)的使用,需要的朋友可以參考下
    2015-08-08
  • 數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實例詳解

    數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實例詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之?dāng)?shù)組Array實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C++數(shù)據(jù)模型應(yīng)用在QML委托代理機(jī)制中

    C++數(shù)據(jù)模型應(yīng)用在QML委托代理機(jī)制中

    這篇文章主要介紹了在QML委托代理機(jī)制中使用C++數(shù)據(jù)模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • C語言實現(xiàn)旅游景點咨詢系統(tǒng)

    C語言實現(xiàn)旅游景點咨詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)旅游景點咨詢系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • C++實現(xiàn)N個骰子的點數(shù)算法

    C++實現(xiàn)N個骰子的點數(shù)算法

    這篇文章主要介紹了C++實現(xiàn)N個骰子的點數(shù)算法,用兩種方法實現(xiàn)了該功能,是非常實用的技巧,需要的朋友可以參考下
    2014-09-09

最新評論

台南县| 郧西县| 浑源县| 金湖县| 汉中市| 黄梅县| 上高县| 广元市| 库尔勒市| 延长县| 庄河市| 永丰县| 和硕县| 邢台县| 环江| 杨浦区| 农安县| 五河县| 乌兰县| 东山县| 张家川| 民乐县| 新竹市| 江达县| 上虞市| 图片| 德令哈市| 古丈县| 高安市| 额济纳旗| 博乐市| 荔浦县| 西丰县| 洛隆县| 镶黄旗| 日喀则市| 汉寿县| 甘肃省| 永修县| 郸城县| 宾川县|