国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)第九章

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)第九章。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、靜態(tài)查找表

(1)順序表的查找

? ? ? ? ?1)順序表查找的結(jié)構(gòu)
typedef struct{
ElemType * elem; //存儲(chǔ)空間基址
int length;      //表長(zhǎng)
}SSTable;

順序查找的過程:從表中最后一個(gè)記錄開始,逐個(gè)進(jìn)行記錄的關(guān)鍵字和給定值的比較。(也就是說,在查找到時(shí)候從最后一個(gè)元素開始查找,在這個(gè)表中位置為0的位置空著,留給你要查找的元素)

在順序表的查找中,需要有一個(gè)“哨兵”負(fù)責(zé)擔(dān)任監(jiān)視哨的任務(wù)。

ST.elem[0].key = key;
//判斷查找的元素(也就是位置0放的位置)是不是和值相等
2)查找的性能分析

查找的操作其實(shí)很簡(jiǎn)單,就是將你要找的值與表中元素一一比較,若不符合,則向前查找,直到找到或者表空為止。

因此順序查找表的長(zhǎng)度為:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)【其中i = 1】

可以看做是:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

(2)有序表的查找

有序表的查找,可以從小到大,或者從大到小。我們一般默認(rèn)是從小到大查找。

1)折半查找

折半查找,查找方式有三個(gè)指針:low,high和mid。其中mid指示區(qū)間的中間位置,即mid=[(high+low)/2]

1.若key與中間元素相等,則查找成功,返回該元素的存儲(chǔ)位置,即mid;
2.若key與中間元素不相等,則所需查找的元素只能在中間元素以外的前半部分或后半部分。(至? ? ?于是前半部分還是后半部分要看key與mid所指向元素的大小關(guān)系)
? ?a.在查找表升序排列的情況下,若給定值key大于中間元素則所查找的元素只可能在后半部分。? ? ? ?此時(shí)讓low=mid+1;
? ?b.若給定值key小于中間元素則所查找的元素只可能在前半部分。此時(shí)讓high=mid-1;

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

//折半查找
int Search Bin(SSTable L,ElemType key){
	low = 1,high = ST.length;
	while(low <= high){
		mid=(low+high)/2;		//取中間位置
		if(L.elem[mid]==key)	
			return mid;			//查找成功返回所在的位置
		else if(L.elem[mid]>key){	//從前部分查找
			high=mid-1;
		}
		else
			low=mid+1;		//從后部分查找
	}
	return 0;				//失敗返回0
}

二、索引順序表的查找

索引順序表也就是分塊查找,許多情況下可能遇到這樣的表:整個(gè)表中未必有序,但若劃分成若干塊后,每一塊中的所有元素均大于或小于其后面的所有元素,稱這種特性為分塊有序,因此可以為該順序表建立一個(gè)索引表,索引表中為每一塊設(shè)置設(shè)置一索引項(xiàng),每一索引項(xiàng)包括兩部分:該塊的起始地址和該塊中最大(或最小)關(guān)鍵字的值(或是所限定的最大(?。╆P(guān)鍵字)。將這些索引項(xiàng)按順序排列成一有序表,即為索引表。

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

三、二叉排序樹和平衡二叉樹

二叉樹定義:

二叉排序樹(又名二叉查找樹)或者是一棵空樹;或者是具有以下性質(zhì)的二叉樹:
1)若它的左子樹不為空,則左子樹上所有結(jié)點(diǎn)的值均小于它根節(jié)點(diǎn)的值
2)若它的右子樹不為空,則右子樹上所有結(jié)點(diǎn)的值均大于它根節(jié)點(diǎn)的值
3)它的左右子樹也分別為二叉排序樹

簡(jiǎn)單來說就是:左比根小,右比根大

1)二叉排序樹的構(gòu)造過程

首先我們使用畫圖的方式來描繪一下二叉排序樹的插入過程,如圖,我們要在一棵空的二叉排序樹中插入一個(gè)數(shù)組6,2,7,4,0,3,1,5,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??首先我們插入第一個(gè)元素6,此時(shí)二叉排序樹中還沒有任何一個(gè)節(jié)點(diǎn),因此我們應(yīng)該新建一個(gè)節(jié)點(diǎn),并將6存儲(chǔ)進(jìn)去,并將6認(rèn)定為根節(jié)點(diǎn),如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后我們插入第二個(gè)元素2,此時(shí)二叉排序樹已經(jīng)不是一個(gè)空樹了,因此我們需要首先找到適合它的位置,我們將2和6進(jìn)行對(duì)比,判斷誰大誰小,我們發(fā)現(xiàn)2更小,因此2應(yīng)該被插入在6的左子樹中,之后我們將2和根節(jié)點(diǎn)6的左子樹進(jìn)行對(duì)比,發(fā)現(xiàn)6的左子樹是空的,因此這時(shí)我們將2存放在6的左子樹根節(jié)點(diǎn)位置,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后是元素7,7顯然大于6,因此我們要將7放在6的右子樹中,經(jīng)過探尋我們發(fā)現(xiàn)6的右子樹根節(jié)點(diǎn)也是空的,因此我們需要將7放在右子樹的根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后是元素4,我們首先將4和6對(duì)比,發(fā)現(xiàn)4是小于6的,因此4應(yīng)該位于6的左子樹上,之后我們將4和6的左子樹根節(jié)點(diǎn)進(jìn)行對(duì)比,發(fā)現(xiàn)4是大于2的,因此4應(yīng)該被放在2的右子樹上,而2的右子樹為空,因此4直接被放置在2的右子樹根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后是元素0,首先我們將0和元素6進(jìn)行對(duì)比,發(fā)現(xiàn)0是小于元素6的,因此應(yīng)該被放置在6的左子樹上,之后我們將0和6的左子樹根節(jié)點(diǎn)進(jìn)行對(duì)比,發(fā)現(xiàn)其小于2,因此0應(yīng)該被放置在2的左子樹上,這時(shí)我們發(fā)現(xiàn)0是小于2的,因此0應(yīng)該被放置在2的左子樹上,同時(shí)我們發(fā)現(xiàn)2的左子樹為空,因此我們將0放置在2的左子樹根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后是元素3,我們發(fā)現(xiàn)元素3是小于6的,因此3應(yīng)該被放置在6的左子樹上,而這時(shí)我們就開始研究6的左子樹,3大于2,因此3應(yīng)該被放置在2的右子樹上,這時(shí)我們開始研究2的右子樹,而3是小于2的右子樹根節(jié)點(diǎn)4的,因此3應(yīng)該放置在4的左子樹上,我們發(fā)現(xiàn)4的左子樹為空,因此我們將3放置在4的左子樹根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后是元素1,首先我們將1和6進(jìn)行對(duì)比,發(fā)現(xiàn)1是小于6的,因此1應(yīng)該被放置在6的左子樹上,而1又小于2,因此應(yīng)該被放置在2的左子樹上,而1又大于0,因此應(yīng)該被放置在0的右子樹上,0的右子樹為空,因此1應(yīng)該被放置在0的右子樹根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

??之后我們研究最后一個(gè)元素5,5小于根節(jié)點(diǎn)6,因此我們應(yīng)該將5放置在6的左子樹上,而5大于2,因此我們應(yīng)該將5放置在2的右子樹上,5大于4,因此5應(yīng)該被放置在4的右子樹上,4的右子樹為空,因此我們將5放置在4的右子樹根節(jié)點(diǎn)上,如圖所示:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

整個(gè)的過程都是從中序這個(gè)節(jié)點(diǎn)前驅(qū)替代

2)平衡二叉樹
定義:

左子樹和右子樹都是平衡二叉樹,且左子樹和右子樹的深度之差的絕對(duì)值不超過1

方法:

從一組數(shù)中選三個(gè),由小到大排序,取中間為新根,小的放左邊,大的放右邊

調(diào)之前:有左邊,將左調(diào)到右

? ? ? ? ? ? ? 有右邊,將右調(diào)到左

比如:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

將它調(diào)整一下:

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)

四、哈希表

不想比較,直接用函數(shù)。

根據(jù)關(guān)鍵碼值(Key Value)直接進(jìn)行訪問的數(shù)據(jù)結(jié)構(gòu)。

哈希表通過「鍵 key 」和「映射函數(shù) Hash(key) 」計(jì)算出對(duì)應(yīng)的「值 value」,把關(guān)鍵碼值映射到表中一個(gè)位置來訪問記錄,以加快查找的速度。這個(gè)映射函數(shù)叫做「哈希函數(shù)(散列函數(shù))」,存放記錄的數(shù)組叫做「哈希表(散列表)」。

哈希表的關(guān)鍵思想是使用哈希函數(shù),將鍵 key 映射到對(duì)應(yīng)表的某個(gè)區(qū)塊中。我們可以將算法思想分為兩個(gè)部分:

1.向哈希表中插入一個(gè)關(guān)鍵碼值:哈希函數(shù)決定該關(guān)鍵字的對(duì)應(yīng)值應(yīng)該存放到表中的哪個(gè)區(qū)塊,并將對(duì)應(yīng)值存放到該區(qū)塊中。

2.在哈希表中搜索一個(gè)關(guān)鍵碼值:使用相同的哈希函數(shù)從哈希表中查找對(duì)應(yīng)的區(qū)塊,并在特定的區(qū)塊搜索該關(guān)鍵字對(duì)應(yīng)的值。

構(gòu)造方法

直接定址法

除留余數(shù)法

數(shù)字分析法

平方取中法

折疊法

處理沖突方法

開放定址法:

先開n個(gè)房間,利用線性放入,如果找x在下面寫上比較次數(shù)

比如:依次插入9? ?11? ?23? ?19? ?54

用數(shù)字除以表長(zhǎng)取余數(shù)即可

數(shù)據(jù)結(jié)構(gòu)第九章,數(shù)據(jù)結(jié)構(gòu)文章來源地址http://www.zghlxwxcb.cn/news/detail-813079.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)第九章的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【數(shù)據(jù)結(jié)構(gòu)入門精講 | 第九篇】考研408排序算法專項(xiàng)練習(xí)(一)

    【數(shù)據(jù)結(jié)構(gòu)入門精講 | 第九篇】考研408排序算法專項(xiàng)練習(xí)(一)

    前面幾篇文章介紹的是排序算法,現(xiàn)在讓我們開始排序算法的專項(xiàng)練習(xí)。 1.希爾排序是穩(wěn)定的算法。(錯(cuò)) 解析:穩(wěn)定性是指如果兩個(gè)元素在排序前后的相對(duì)順序保持不變,那么這個(gè)排序算法就是穩(wěn)定的。對(duì)于具有相同的元素,排序后它們的相對(duì)位置應(yīng)該保持不變。

    2024年02月03日
    瀏覽(26)
  • 【夜深人靜學(xué)數(shù)據(jù)結(jié)構(gòu)與算法 | 第九篇】棧與隊(duì)列

    【夜深人靜學(xué)數(shù)據(jù)結(jié)構(gòu)與算法 | 第九篇】棧與隊(duì)列

    目錄 ?前言: 棧: 棧的實(shí)際應(yīng)用:? 隊(duì)列: 隊(duì)列的實(shí)際應(yīng)用: 總結(jié): ? ? ? ? 棧與隊(duì)列是我們學(xué)習(xí)的兩個(gè)經(jīng)典的數(shù)據(jù)結(jié)構(gòu),這兩個(gè)數(shù)據(jù)結(jié)構(gòu)應(yīng)用廣泛,在計(jì)算機(jī)內(nèi)有很多底層應(yīng)用,而很多算法也是依靠棧和隊(duì)列來實(shí)現(xiàn)的,因此我們要想學(xué)好數(shù)據(jù)結(jié)構(gòu)與算法,就要學(xué)好棧與

    2024年02月15日
    瀏覽(13)
  • MATLAB第九章_數(shù)據(jù)圖形可視化

    MATLAB第九章_數(shù)據(jù)圖形可視化

    目錄 數(shù)據(jù)圖形可視化 MATLAB圖形窗口 函數(shù)繪制 一元函數(shù)繪制 ?二元函數(shù)繪圖 數(shù)據(jù)圖形繪制簡(jiǎn)介 離散數(shù)據(jù)可視化 連續(xù)函數(shù)可視化 二維繪圖函數(shù) 基本繪圖 快速方程式畫圖 特殊二維圖形 ?三維繪圖函數(shù) 繪制三維曲面 生成柵格數(shù)據(jù) 網(wǎng)格曲線繪制 隱藏線的顯示和關(guān)閉 ? ? ? ?

    2024年02月08日
    瀏覽(25)
  • ChatGPT技術(shù)原理 第九章:數(shù)據(jù)集和訓(xùn)練技巧

    目錄 9.1 對(duì)話數(shù)據(jù)集 9.2 數(shù)據(jù)預(yù)處理 9.3 預(yù)訓(xùn)練技巧 9.4 微調(diào)技巧

    2024年02月02日
    瀏覽(25)
  • WPF入門到跪下 第九章 MVVM-基本數(shù)據(jù)處理

    WPF入門到跪下 第九章 MVVM-基本數(shù)據(jù)處理

    MVVM是Model-View-ViewModel的縮寫。mvvm是一種設(shè)計(jì)思想。Model 層代表數(shù)據(jù)模型,也可以在Model中定義數(shù)據(jù)修改和操作的業(yè)務(wù)邏輯;View 代表UI 組件,它負(fù)責(zé)將數(shù)據(jù)模型轉(zhuǎn)化成UI展現(xiàn)出來,ViewModel是一個(gè)同步View和Model的對(duì)象。 在MVVM架構(gòu)下,View和Model之間沒有直接的聯(lián)系,它們通過Vie

    2024年01月21日
    瀏覽(24)
  • 計(jì)量經(jīng)濟(jì)學(xué)及Stata應(yīng)用 陳強(qiáng) 第九章模型設(shè)定與數(shù)據(jù)問題習(xí)題9.4

    計(jì)量經(jīng)濟(jì)學(xué)及Stata應(yīng)用 陳強(qiáng) 第九章模型設(shè)定與數(shù)據(jù)問題習(xí)題9.4

    9.4使用數(shù)據(jù)集Growth.dta考察貿(mào)易與增長(zhǎng)的關(guān)系。該數(shù)據(jù)集的被解釋變量為65個(gè)國(guó)家1960-1995年的平均增長(zhǎng)率(growth),而主要解釋變量為1960-1995年的平均貿(mào)易開放度(tradeshare) (1)將growth與tradeshare的散點(diǎn)圖與線性擬合圖畫在一起,二者看上去是否有關(guān)系? (2)有一個(gè)國(guó)家馬耳

    2024年02月04日
    瀏覽(104)
  • 計(jì)量經(jīng)濟(jì)學(xué)及Stata應(yīng)用 陳強(qiáng) 第九章模型設(shè)定與數(shù)據(jù)問題習(xí)題9.5

    計(jì)量經(jīng)濟(jì)學(xué)及Stata應(yīng)用 陳強(qiáng) 第九章模型設(shè)定與數(shù)據(jù)問題習(xí)題9.5

    9.5美國(guó)的汽油需求函數(shù)是否穩(wěn)定?使用數(shù)據(jù)集gasoline.dta,估計(jì)美國(guó)1953-2004年的汽油需求函數(shù): 其中,被解釋變量lgasq為人均汽油消費(fèi)量的對(duì)數(shù),解釋變量lincome為人均收入對(duì)數(shù),lgasp為汽油價(jià)格指數(shù)的對(duì)數(shù),lpnc為新車價(jià)格指數(shù)的對(duì)數(shù),lpuc為二手車價(jià)格指數(shù)的對(duì)數(shù)。 (1)將lgas

    2024年02月06日
    瀏覽(42)
  • Windows下的Spark環(huán)境配置(含IDEA創(chuàng)建工程--《Spark大數(shù)據(jù)技術(shù)與應(yīng)用》第九章-菜品推薦項(xiàng)目)

    Windows下的Spark環(huán)境配置(含IDEA創(chuàng)建工程--《Spark大數(shù)據(jù)技術(shù)與應(yīng)用》第九章-菜品推薦項(xiàng)目)

    本文適用于《Spark大數(shù)據(jù)技術(shù)與應(yīng)用》第九章-菜品推薦項(xiàng)目環(huán)境配置:` 跟著做就行… 資源都在網(wǎng)盤里面,純粹的無腦配置… 提示:以下是本篇文章正文內(nèi)容,所用資源版本過低,用于課本實(shí)驗(yàn) ,且已有Java環(huán)境 scala:2.12.8 spark:1.6.2 hadoop:2.6.4 hadoop啟動(dòng)文件exe JAVA 如果按照

    2024年02月09日
    瀏覽(20)
  • 《Linux操作系統(tǒng)編程》第九章 數(shù)據(jù)查找和篩選工具 : 了解流編輯器sed和報(bào)表生成器awk的簡(jiǎn)單使用

    《Linux操作系統(tǒng)編程》第九章 數(shù)據(jù)查找和篩選工具 : 了解流編輯器sed和報(bào)表生成器awk的簡(jiǎn)單使用

    ???? 博主 libin9iOak帶您 Go to New World.??? ?? 個(gè)人主頁——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動(dòng)形象??簡(jiǎn)單易學(xué)!歡迎大家來踩踩~?? ?? 《IDEA開發(fā)秘籍》學(xué)會(huì)IDEA常用操作,工作效率翻倍~?? ???? 希望本文能夠給您帶來一定的幫助??文章粗淺,敬

    2024年02月12日
    瀏覽(32)
  • 第九章:Java常用類

    目錄 9.1:字符串相關(guān)的類:String ? ? ? ? 9.1.1:String用法 ? ? ? ? 9.1.2:String方法 ? ? ? ? 9.1.3:String與char[]、byte[]之間的轉(zhuǎn)換 ????????9.1.4:StringBuffer和StringBuilder的使用 9.2:JDK 8之前的日期時(shí)間API 9.3:JDK 8中新日期時(shí)間API ? ? ? ? 9.3.1:LocalDate、LocalTime、LocalDateTime的使

    2024年02月09日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包