欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一篇文章帶你入門C語(yǔ)言數(shù)據(jù)結(jié)構(gòu):緒論

 更新時(shí)間:2021年08月03日 15:18:46   作者:AKA你的閨蜜  
這篇文章主要介紹了C語(yǔ)言的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對(duì)廣大的程序愛(ài)好者有所幫助,同時(shí)祝大家有一個(gè)好成績(jī),需要的朋友可以參考下,希望能給你帶來(lái)幫助

緒論

什么是數(shù)據(jù)結(jié)構(gòu)?

不同于計(jì)算機(jī)操作培訓(xùn),注意與程序設(shè)計(jì)的區(qū)別。

Example 1

求n個(gè)數(shù)的最大值、次最大值。

//1.遍歷 - 最樸素的方法
int main()
{
	int arr[10] = { 22,334,552,1,4,6,78,23,55,98 };
	int i = 0;
	int temp = 0;
	int max1 = arr[0];
	int max2 = arr[1];
	for (i = 1; i < 10; i++)
	{
		if (arr[i] > max1)
		{
			temp = max1;
			max1 = arr[i];
			arr[i] = temp;
		}
	}
	printf("%d\n", max1);
	for (i = 2; i < 10; i++)
	{
		if (arr[i] > max2)
		{
			temp = max2;
			max2 = arr[i];			arr[i] = temp;
		}
	}
	printf("%d\n", max2); 
	return 0;
}
遍歷方法共需進(jìn)行 n − 1 + n − 2 = 2 n − 3 n-1+n-2=2n-3 n−1+n−2=2n−3次比較。

變題

有n個(gè)足球隊(duì)比賽,問(wèn)至少多少次比賽才能找到冠軍和亞軍。

解:
實(shí)際中通常采用錦標(biāo)賽方法。(淘汰制)
設(shè)有8個(gè)數(shù)分別為5,7,3,6,8,9,4,2
兩兩為一組進(jìn)行比較,大的勝出,小的淘汰。

錦標(biāo)賽1

毋庸置疑的是,無(wú)論怎么分組,顯然最大值永遠(yuǎn)不會(huì)被淘汰。故最大值為9。

共進(jìn)行了 8 / 2 + 4 / 2 + 2 / 2 = 7 8/2+4/2+2/2=7 8/2+4/2+2/2=7次比較。

故變題尋找冠軍的比較次數(shù)為 n / 2 + n / 2 2 + … + n / 2 k = n − 1 n/2+n/2^2+…+n/2^k=n-1 n/2+n/22+…+n/2k=n−1

錦標(biāo)賽2

次最大值肯定是被最大值給比下去了,不然它就是最大值了。所以順著這個(gè)思路,把所有和最大值進(jìn)行過(guò)直接比較的數(shù)字跳出來(lái),重新進(jìn)行比較。

就是如圖所示帶*的數(shù)字,個(gè)數(shù)記為k,稍加思索則得出 k = l o g 2 n k=log_2{n} k=log2​n

2.故變題尋找亞軍的比較次數(shù)為 l o g 2 n − 1 log_2{n}-1 log2​n−1

錦標(biāo)賽方法共需 n − 1 + l o g 2 n − 1 = n + l o g 2 n − 2 n-1+log_2{n}-1=n+log_2{n}-2 n−1+log2​n−1=n+log2​n−2次比較。

課后思考:將該模型用C程序編寫(xiě)出來(lái)。

討論

​ 處理一般實(shí)際工程問(wèn)題的方法。

  • 找出解決方案。
  • 找出最優(yōu)解。(最節(jié)省資源:CPU和內(nèi)存)

計(jì)算機(jī)模型

Example 2

判斷表達(dá)式中括號(hào)是否匹配

Z = ( ( a + b ) + c ) ∗ 2 + ( 3 − 5 ) / 7 − ( ( 6 + 2 ) / 8 + a )

void match(char* ch)
{
	int count = 0;
	int i = 0; 
	while (ch[i]!= ';') 
	{
		if(ch[i] == '(')
			count++;
		else if (ch[i] ==')')
			count--; 
		i++;
	}
	if (count != 0)
		printf("%s\n","no match");
	else 
		printf("%s\n","match");
}

當(dāng)然,上述代碼是由左向右數(shù)括號(hào)數(shù)是否相等來(lái)判斷括號(hào)是否匹配,很容易就可以舉出反例 f = ) a + b ( f=)a+b( f=)a+b( ,所有該方法是不成熟的。

Example 3

交叉路口交通管理系統(tǒng)

岔路口

  • 把可以走通的道路設(shè)為頂點(diǎn)
  • 如果兩個(gè)頂點(diǎn)有沖突,用頂點(diǎn)之間的連線表示

變題 著色算法

在狀態(tài)圖中,相鄰(有連線)的頂點(diǎn)不能是同一種狀態(tài)。故對(duì)于頂點(diǎn)的不同狀態(tài),我們用不同的顏色去表示。由于四色定理,多余5叉的路口不能用少于4種顏色來(lái)表示。

在狀態(tài)圖中至少需要多少種顏色來(lái)表示?

Example 4

如何快速走出迷宮?

走迷宮

以上問(wèn)題現(xiàn)階段并不作要求,目的是向大家介紹下數(shù)據(jù)結(jié)構(gòu)的研究問(wèn)題。

現(xiàn)在我們是否能回答出剛開(kāi)始時(shí)問(wèn)大家的問(wèn)題呢?數(shù)據(jù)結(jié)構(gòu)是什么?

數(shù)據(jù)結(jié)構(gòu)是研究的是非數(shù)值計(jì)算的程序設(shè)計(jì)方法。

在這里插入圖片描述

總結(jié)

本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • C++ 實(shí)現(xiàn)靜態(tài)單鏈表的實(shí)例

    C++ 實(shí)現(xiàn)靜態(tài)單鏈表的實(shí)例

    這篇文章主要介紹了C++ 實(shí)現(xiàn)靜態(tài)單鏈表的實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C++基于Directx MMX實(shí)現(xiàn)的圖像灰度轉(zhuǎn)換代碼

    C++基于Directx MMX實(shí)現(xiàn)的圖像灰度轉(zhuǎn)換代碼

    這篇文章主要介紹了C++基于Directx MMX實(shí)現(xiàn)的圖像灰度轉(zhuǎn)換代碼,需要的朋友可以參考下
    2014-08-08
  • 使用c語(yǔ)言輕松實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存管

    使用c語(yǔ)言輕松實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存管

    這篇文章主要介紹了使用c語(yǔ)言輕松實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存管,本文章內(nèi)容詳細(xì),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,需要的朋友可以參考下
    2023-01-01
  • C++超詳細(xì)探究new/delete的使用

    C++超詳細(xì)探究new/delete的使用

    這篇文章主要介紹了C++中new與deleted關(guān)鍵字的使用,new在動(dòng)態(tài)內(nèi)存中為對(duì)象分配空間并返回一個(gè)指向該對(duì)象的指針;delete接受一個(gè)動(dòng)態(tài)對(duì)象的指針, 銷毀該對(duì)象, 并釋放與之關(guān)聯(lián)的內(nèi)存
    2022-07-07
  • C語(yǔ)言基礎(chǔ)解析之分支與循環(huán)語(yǔ)句

    C語(yǔ)言基礎(chǔ)解析之分支與循環(huán)語(yǔ)句

    C語(yǔ)言是一門結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言,當(dāng)C語(yǔ)言用來(lái)描述生活中的事物時(shí),會(huì)用到三種結(jié)構(gòu):順序結(jié)構(gòu)(不去贅述),選擇結(jié)構(gòu)(對(duì)應(yīng)分支語(yǔ)句),循環(huán)結(jié)構(gòu)(對(duì)應(yīng)循環(huán)語(yǔ)句),分支語(yǔ)句:分支語(yǔ)句分為兩種,一種是if語(yǔ)句,一種是switch語(yǔ)句
    2021-09-09
  • 使用C語(yǔ)言訪問(wèn)51單片機(jī)中存儲(chǔ)器的核心代碼

    使用C語(yǔ)言訪問(wèn)51單片機(jī)中存儲(chǔ)器的核心代碼

    這篇文章主要介紹了使用C語(yǔ)言訪問(wèn)51單片機(jī)中存儲(chǔ)器的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C++使用回溯法解決黃金礦工問(wèn)題

    C++使用回溯法解決黃金礦工問(wèn)題

    在矩陣中考察回溯算法,分為任意起點(diǎn)、左上角開(kāi)始等情況。從而有不同的模板,其實(shí)區(qū)別就是直接開(kāi)始還是每個(gè)坐標(biāo)都去嘗試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • c++類構(gòu)造函數(shù)詳解

    c++類構(gòu)造函數(shù)詳解

    這篇文章主要介紹了c++類構(gòu)造函數(shù)示例,需要的朋友可以參考下
    2014-05-05
  • 用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄

    這篇文章主要為大家詳細(xì)介紹了用C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易通訊錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C語(yǔ)言直接選擇排序算法詳解

    C語(yǔ)言直接選擇排序算法詳解

    直接選擇排序就是遍歷整個(gè)數(shù)組,每遍歷一遍的目的是找出該數(shù)組中的最大數(shù)和最小數(shù)對(duì)應(yīng)的下標(biāo),然后將最小數(shù)和數(shù)組的第一個(gè)數(shù)進(jìn)行交換,最大數(shù)和數(shù)組的最后一個(gè)數(shù)進(jìn)行交換,然后縮小范圍再次遍歷
    2022-08-08

最新評(píng)論