7.2.1顺序查找
?
?
?
我拿出來給你的,已經是我有的最好的了,怎么才能讓你看到我呢。只要你要,只要我有。哈哈哈加油加油??
大家好,我們今后來學習第1種方式方式就是順序調整。各位同學大家好,本節課我們來學習,第1種查找方式就是順序查找,順序查找是所有操作方式當中最簡單最好理解的那一種,假設現在我們有一群小朋友,我們讓他們整成一排,如何找到其中一個小朋友呢,假設我們現在要找到小城,那么我們要從頭開始與每一個小朋友進行比較大大,是不是小潮,那么第1個小馬小黃當然不是小城了,所以我們有一次找尋下一個小朋友,小青也不是小潮,然后看一下小藍,第3個小朋友是小藍,也不是小城,最后我們在第4個小朋友上找到了小程,這樣我們就通過了這樣一種一次查找的方式,找到了小船,這樣一個小朋友,其實這種茶友方式就是今天所要講述的順序查找,它是如何定義的呢,順序查找在書中是這樣定義的,又稱為線性查找,主要用于在線性表中進行查找祝一下。不是,就是今天所講述的順序查找它是如何定義的呢,順序查找在書中是這樣定義的,又稱為線性查找,主要用于在線性表中進行查找,同學們要注意一下順差,找一定是在線性表當中進行查找的一種方式,那么在橢圓當中,它主要用于在線性表中進行查找,在線性表中它是最方便也是最好實現的好,這就是順序查找的定義,那么對于先天們來講,其中的數據元素可以是有序的也可以是無序的,那么對于無序線性表和有序性表,它們的順序調整方式會有不同嗎。我們首先來看一下無序限行表的順序查找,我們希望這些小朋友對他們進行編號,那么這些編號是沒有順序的,這是不是就是我們上節課所講述的關鍵字啊,每一個小朋友對應著唯一一個關鍵字關鍵字之間是不同的,好,我們剛剛對3號小朋友也就是小程進行了查找,需要比較4次,那么現在我們要找一個小朋友,他是小a他的編號為7,我們一眼看上去他并不在上面,這一排小朋友當中如何表明他不在呢?我們是不是要從頭開始找尋每一個小朋友啊?那么第1個小朋友他編號為22 57,所以小黃不是小黑,然后我們依次的進行查找進行編號的比較,直到比較到最后一個小飛小飛,我們發現小魏的編號為4也不是氣,所以他也不是小黑,那么找學生小麗之后,我們是不是就發現了這一排并沒有小黑這樣一個小朋友如果。并沒有小黑這樣一個小朋友,那么對于無序現象來講,如果想要證明一個數據原則,那么在該節課當中,是不是要對所有的數據元素進行比較,如果這些樹元素都不是我們想要查找的一個數,原宿才表明了我們所要查找的數學元素,并不在所要查找的這個集合當中,所以對于無線里面來講,進行順序查找時,查找失敗時要便利整個c形表,才可以說明我們需要查找的數據元素不在該寫的文章中好,這就是無序相應表達順序,查找查找失敗時我們需要注意的地方好,那么對于線性流程查找是不是就是從一端開始一次的進行查找啊?那么實現它的代碼是不是也會非常簡單啊?這就是是檢查代碼,那么首先我們定義了一個cot,這個cot表明了我們所要查找的這個查找表,它叫sst報其中一個是我班所有數據我們有一個。它是線上代碼,那么首先我們定義了一個cot,這個cot表明了我們所查找的這個查找表,它叫sst包,那么其中有兩個元素,第1個是我們存儲所有數據元素的這個數組,我們用一個指針類型的變量表示,那么下面這一個整形變量表示的是整個表的長度好,這就是我們定義了一個查找表的結構體,接著我們就對該結合體進行查找,這個該查找表進行查找,那么下面這個函數就是我們所進行的順序查找的函數,這里反饋的是我們查找到的這個數據元素的位置,那么傳輸參數有兩個,第1個是傳入到這個產生表,第2個是我們要查找的這個關鍵字,那么我來看一下它是如何實現的,其實非常簡單,首先我們要第1個元素數字當中的零散的這個元素賦值,為我們所要查找的關鍵詞什么意思啊這是一個哨兵的概念那么我們將這個保存數據。布置為我們所查找的關鍵字,但是什么意思呢?其實這是一個哨兵的概念,那么我們將保存數據元素數組的第1個位置,也就是您下標的位置,作為一個哨兵,它并不存放任何的數據元素,那么首先我們初始化是先把它存放了我們這個所要查找的關鍵字,那么接下來我們來看一下它是如何進行查找的,我們就是要這個哨兵的作用了,那么接下來的過程就是這樣一個負循環語句,那么我們可以看一下這個for循環的作用,首先我們要這個初始化里面變量I為我們查找表的長度,也就是說我們是全部用于100 100兆的,那么每次進行簡易向前進行查找,直到找到這個關鍵詞的時候,就100 120就終止循環,最后是不是就返回這個位置這個有什么作用呢。回這個所查找的這個元素的位置啊,那么這里的這個哨兵到底有什么作用呢?我們發現如果干預數據元素并沒有在我們所查找這個查找表當中,是不是就會從未一直循環到頭啊?當循環到頭之后,我們在哨兵位置水平下標的位置設置了,它就是我們所要查找的這個關鍵字,那么這個放血管是不是就是在哨兵的位置停止,它一定會在執行的情況下,因為哨兵的位置,我們之前初始發尾拉我們所查找的關鍵字,那么也就是說如果查找失敗的話,我們這個范圍是會返回哨兵的下標也就是零那么零次代表查找失敗,那么為什么要增加這個哨兵呢?它的作用是什么呢?其實它的作用就是我們不用在天下額外的判斷一些東西,我們來看一下,如果沒有這個設備的話,我們從頭到尾都進行查找,那么從頭到尾請查找,如果查找失敗的話,是不是就要迅速把它倒掉。是不是不好插手循環到流尾了我們在循環之后是不是還要做一個條件判斷語句,也就是我們要增加一個判斷語句判斷我們循環結束的這個位置是不是在標本如果是在標本則表示它這種失敗如果不是在表本時代表中的話,則表示它是查找成功,所以我們利用這個哨兵的概念省去了這樣一個條件判斷的過程,那么對于比較復雜的代碼,那么這樣條件判斷的程序會給我們之后的時限增加非常大的便利,所以我們增加了這樣一個哨兵,但是同學們注意一下,不是所有的實驗代碼都會使用哨兵這樣一個概念的,所以我們在做題時也要具體問題具體分析好,這就是實現順序查找的我們也用長度是嗎。啊,是不是sl表示平均插入長度啊?它是利用了這樣一個懲擊求合的方式,那么pi代表的是查找每一個數據元素的概率,那么通常我們給它為n/1,也就是所有的數據元素,它查找的概率是相等的,那么之后的這個CS表示dnf元素它的產生長度也是它的比較次數,我們利用這樣一個求和公式計算了整個查賬表的平均查找長度,那么對于順序表它的查處成功時的平均查處程度是怎樣計算的呢?我們來看一下,我們知道我們是從尾向前計算的,所以說每一個數元素它的比較次數是n-a+1,那么它的pa是不是就是n/1啊?我們把它帶進去就可以計算出我們對應照順序查找的平均產的長度,將它化簡之后就是+/n21,我們發現順序查找它的使用效率,是不是一個n的數量積啊。順序查找它的時間效率,是不是一個n的數量積啊?那么如果是查找失敗,它的查找單位是什么樣子呢?我們知道在無序限行表當中是不是查找失敗,只有便利者和線性表才可以說明該數據元素,我在該查找表當中啊,所以說如果查有失敗我們比較次數一定是n加一次,那么這里為什么是n+14呢?同學們肯定會有疑問,因為整個線性表長度如果是n個數據元素的話,我們比較n次是不是就可以了,但是這里的嘉羿表示的是我們上面實現的這個代碼上面,這個時間代碼查找失敗時我們比較加一次,大家還記不記得我們也入了一個哨兵啊比較所以說再加上所以說這一場路是。它的失敗肯定才有長度,是n加一次,還有這就是有關順序查找的成功和失敗的平均查找長度,這個過程當中也是這樣進行查找的碼子,看一下學前一秒的順序查找是如何進行的,那么我們將所有的小朋友進行有序的排列,也就是說按關鍵字從小到大的順序進行了排練,我們還是來找一下小成,這個小朋友就要從頭開始比較,那么從它開始,小紅小黃最后在第3個位置找到了小抄,那么我發現如果該數元素存在在該材料表當中,是不是他的上頭。進行了排練,我們還是來找一下小成這個小朋友,你就要從頭開始比較對吧,從頭開始小紅小黃,最后在第3個位置找到了小程,那么我發現如果感受元素存在在該強壯表當中,是不是他的這種方式與無序的現象表示相同的,那么接下來我們來看,如果柏樹元素不再在闡述表當中呢,我們來找一下小黑,那么小黑她的變成周,我們依舊要從頭開始進行比較最后小玉的編號15也不是4,那么我們還需要接下來來進行比較嗎?是不是不用了?因為五編號之后的所有數學元素,它的關鍵詞是不是都要比四要大呀,所以說我們查找到小玉就可以判斷小黑不在該產品當中。是不是都要比死要大呀?所以說我們查找到小玉就可以判斷小黑不在該查找的當中,我們發現那是不是與無序限行表的順序查找是不同的,如果該數元素不在待產當中無需鑒定表,我們要查找整個家裝表,也就是對應比較所有的數據元素才可以證明該數據元素不再在查查表當中,那么對于有序的線性表,我們只要找到比它大的那一個關鍵字為止,就可以說明該查找的元素不再在查找表當中了,那么我們發現對于有序的線性表,它的查找查找失敗時,它是不是會更加的有效率啊?所以我們有這樣的結論對關鍵字有序線性表進行適應查找時查找失敗,不一定要并列整個線性表,我們只要編列比它大的那個數據元素的位置就可以了一個所有。一個所有的數學元素換一次,從小到大排列的線性表當中進行查找的話,假如我們現在要查找的一個關鍵字本k,如果我們查找到da個關鍵的字時,且I的值要比kl大的話,那么則說明查找失敗,也就是說其后的是元素都不是k了,為什么啊?因為其后的數學元素是不是都比kl大,它是從小到大相排列的,這樣我們就可以縮短了有序線性表的平均差長度,查找失敗時的平均差的長度,大家注意一下,這里常有成功的朋友常有長度,是不是依舊是相同的呀?我們是縮短了查找失敗時的平均查找長度,那么怎樣計算有序性的表順序查找的查找失敗時的,平均查找長度的就是描述成的什么。他們是描述查找過程的22排序數,我們來以一個例子來具體的講解一下,什么是判定數,這是一個有序進行表,它是從小到大行排列到了12 10 30和40 50,我們現在構造它的判定數,首先我們將所有的數據元素構造出了一個二次函數,那么在該樣式函數當中,我們所有所有的數都要比跟c點的值要小,所有右側數不要變比較大,所以我們叫他們給我造成了這樣一顆22排序數,那么接下來在查找過程當中,除了之前查找成功的節點,我們可以查找到的數據元素,是不是還有那些我們常常用到的數據元素啊,那么那些數據元素集合應該怎樣表示呢?是這樣表示的,那么這些橙色就行,是不是就是查找室外室的查找元素的集合呀,那么我們來看一下根結點也就是值為10的這一個節點。元素的集合呀,那么我們來看一下根結點也就是值為10的這一個節點,它的著作數是不是就是所有比賽該簽的表當中的數據元素,它是服務熊當時這樣一個集合,那么二是這個節點的左子數,也是所有不在該線段當中元素的集合10~20這一個區間,接下來我們來看一下最后這一個節點,最后這個點除了40~50這一個集合這個區間之外,還有50道正無窮這一個區間,它的所處元素都不再在線性表當中,這樣我們就構造出了描述查找過程的這樣一個2叉排序樹,他就是該找的判定數,我們稱這些橘黃色的矩形叫做失敗的節點,它代表了我們查找失敗的這樣一個類似的取消。他代表查找失敗的這樣一個例子,那么其實這些黃色矩形在有些教材有些題目當中,我們是把它認定為實際存在的節點,就是該判定書的一些點,那么在有一個教材,有些題目當中,也把它看作一個空間點的,一個虛擬存在的空間點大家要具體問題來具體看,那么如何可以用判定數來描述查找的過程當中我們來查找一個數據元素,試一下查找30這個數據元素,它存在這樣一個現象當中,我們首先要從根基上出發,查找更先進的元素的痣,它是使我們發現它并不等于30,那么接下來我們應該查找時的竹子樹還是柚子樹,當我們發現所有數的值是不是都比30比較小啊?所以我們要查找他的柚子樹,那么我們到他的柚子樹比三十大但是一二十位數二十。月子數所有值都要比30要大,那么查找約數數的根基點,它是以20為根基點的子數,20并不等于31就要查找它的柚子數,我們一就要查找u字數的更節點,月色數的更節點是不是等于30啊?這樣我們就查找到了30這個節點,它是在我們這個線性表當中,這就是我們利用了判定數來描述了查找35這個元素的過程,那么接下來我們來看一下,如果查找一個不存在在DNA表當中的元素呢,于是查找25這個值,我們一定要從本節點出發,更經典是10那么25:10要大,所以要查找它的柚子數,那么查找柚子數時,柚子數要跟節點為20,那么25億就是你20要大的,所以我們要查找20萬的用什么數。25:10要大,所以要查找他的柚子樹,那么插手柚子樹,16的數字節點為20,那么25依舊比20要大,所以我們要創造20的有算數那么20個柚子樹,它是30那么25是不是要比30要小,所以要查找到30~50歲到30歲的時候,是不是對應的是一個失敗景點啊?這樣我們就說明了查找25這個操作是失敗了,25是不在該現象比較多的,所以我們發現了,如果我們查找失敗,是不是就會一定要走到對應的失敗節點啊?這就是查找失敗的一個例子,我們發現查找失敗時,我們一定會走到它對應那個區間的室外節點,并且對于順序查找來講,那么查找失敗它的比較次數是不是就是該失敗的節點的次方數減1啊減一我比較老實。失敗的節點的4成數減1啊,大家要記住是失敗寫點湊數減1,我們比較了12 10 30這三個成功的節點,那么對應的對應走到了30的下一個層面就是20~30這個失敗節點,我們按照這樣的規律就可以計算出順序,查找有序線性表的順序查找他的茶有失敗的平均查找長度我們就通過這樣一個公式來計算,那么其中PC代表的依舊是所有元素的查找它的概率,那么這里因為失敗的元素是不是有非常多呀?我們在復興到10這個區間,是不是有無窮多個查找失敗的方向,所以這里如果我們按照的是每個元素來講的話,其實是沒辦法計算到,我們只有在實際做題時給出到底查找了哪些失敗的元素,才可以計算出它產生值y值到平均值的長度,但是如果我想總結的話,那么我們就要以區間為一個單位了對于。才可以計算它查找失敗時的平均查找長度,但是如果我想總結的話,那么我們就要以區間為一個單位了,這里我們發現對于判定數來講,它的查找失敗節點是不是已經有 n加一個,然后如果有了等等成功起點,它的失敗起點已經有n加一個,其實非常簡單,是不是每個生活節點它到左邊這個節點一定是一個失敗節點,而且最后一個節點一定有兩個失敗節點,所以一共有n加一崗失敗節點,那么有人加一個失敗節點,每一個失敗節點失敗節點查找的概率是不是就是n+11/5啊,大家注意一下再次強調,這與我們是以失敗的這個區間為一個單位的是一個單位的因為就可以通過了長度。棒的好,這樣我們就可以通過這樣一個公式來計算出有序性表在查找失敗時的平均差長度,那么pj是n+1/1,那么cc是 lj-1,也就是對應這個失敗節點的層數減一剛剛我們講出了為什么要減1了,那么接著我們把它代入n+1/1+2,一直加到n再加n這里,為什么是1+2一直加到n再加n,那那么當然是第1個失敗節點,它的層數為2啊,那么2-1是不是就一樣一次的是2然后加3一直加到n這里,為什么還要加一個呢?發現最后一個成功的起點是不是左右有兩個失敗節點啊,所以是n加n會得到一個答案就是二分之恩加上失敗失敗。1/n加上n加2/n,這就是失敗時的平均查找長度,那么正如剛剛我們所講,這里的失敗的平均差長度是對應每一個失敗節點的失敗的平差長度,所以說在考驗做題當中,對于這樣一個公式直接利用它代入求簡計算的情況非常的少,大部分情況都是題目會給出我們幾個查找失敗的例子來,讓我們計算它的失敗時平均差的長度,但是同學們要理解這樣一個公式是如何計算而來的好,這就是本節課的全部內容。
?
?
總結
- 上一篇: 【Idea】人工智能编程他来了,Idea
- 下一篇: 祝福 Eric 的下一段旅程|Flutt