999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于系統的查找算法研究

2012-04-29 00:00:00欒磊高捷聞
商場現代化 2012年6期

[摘 要]本文分析了查找算法在系統開發中的重要性,通過比較常見的靜態查找算法,得出最優的二分法查找,是系統開發過程中查找算法的首選。

[關鍵詞]算法 順序查找 二分法查找 分塊查找

一、系統算法概述

算法是一系列解決問題的清晰指令,也就是說,能夠對一定規范的輸入,在有限時間內獲得所要求的輸出。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優劣可以用空間復雜度與時間復雜度來衡量。

一個算法應該具有以下五個重要的特征: 1.有窮性:一個算法必須保證執行有限步之后結束; 2.確切性:算法的每一步驟必須有確切的定義; 3.輸入:一個算法有0個或多個輸入,以刻畫運算對象的初始情況; 4.輸出:一個算法有一個或多個輸出,以反映對輸入數據加工后的結果;5.可行性:算法原則上能夠精確地運行,有限次運算后即可完成。

由此可以看出,一個算法的好壞對于系統能否成功有著決定性的作用。對于任何一個系統設計人員來說,系統算法的設計都是考慮問題的重中之重。因此算法的優良直接影響著系統的使用價值。

二、算法復雜性分析

算法的復雜性是算法效率的度量,是評價算法優劣的重要依據。一個算法的復雜性的高低體現在運行該算法所需要的計算機資源的多少上面,所需的資源越多,我們就說該算法的復雜性越高;反之,所需的資源越低,則該算法的復雜性越低。計算機的資源,最重要的是時間和空間(即存儲器)資源。因而,算法的復雜性有時間復雜性和空間復雜性之分。

不言而喻,對于任意給定的問題,設計出復雜性盡可能地的算法是我們在設計算法是追求的一個重要目標;另一方面,當給定的問題已有多種算法時,選擇其中復雜性最低者,是我們在選用算法適應遵循的一個重要準則。因此,算法的復雜性分析對算法的設計或選用有著重要的指導意義和實用價值。

三、查找算法概述

查找是確定數據元素集合中是否存在數據元素等于特定元素或者是否存在元素滿足某種給定特征的過程。要進行查找,必須知道待查找對象的特征,也就是要知道待查找數據元素的關鍵字。一般地,衡量查找算法效率的標準是平均查找長度ASL,也就是為確定某一結點在數據集合中的位置,給定值與集合中的結點關鍵字所需進行的比較次數。對于具有n個數據元素的集合,查找某元素成功的平均查找長度為:ASL= 其中n是查找表中結點的個數;Ci為查找第i個元素的概率 =1。在分析查找算法的復雜性時,若未特別說明,認為每個結點具有相同的查找概率,即p1=p2..=pn=1/n。查找算法在各類程序中應用非常廣泛。查找算法主要有兩大類:一類是基于靜態查找表上的操作,另一類是基于動態查找表上的操作。本系統主要是基于靜態查找表上的操作,其主要使用的查找算法有:順序查找、二分法查找與分塊查找。

1.順序查找。順序查找是一種最簡單的查找方法。它的基本思想是:從表的一端開始,順序進行查找,直到找到的結點關鍵字與給定的Key相等為止,若查找結束后,仍未找到關鍵字等于Key的結點,則查找失敗。順序查找算法的缺點是查找時間長。其查找成功時的平均查找長度為:

在查找失敗時,算法的平均查找長度為:

2.二分法查找。二分法查找又稱為折半查找,采用二分法查找可以大大提高查找效率,它要求線性表的結點按其關鍵字從小到大(或從大到小)按序排列并采用順序存儲結構。二分法查找的基本過程是:設L[low..high]是當前的查找區間,首先讓待查找的數據元素同線性表中間結點mid=[(low+high)/2]的關鍵字相比較,若比較相等,則查找成功并結束二分查找;若待查找的數據元素比中間結點的關鍵字要小,則在線性表的前半部分L[low...mid-1]進行二分查找;反之,則在線性表的后半部分[mid+1...high]進行二分查找,直到找到滿足條件的結點或者確定表中沒有這樣的結點為止。

二分查找每經過一次比較就將查找范圍縮小一半,因此比較次數是log2n這個量級的。不妨設n=2k-1(2的K次方),容易看出,線性表至多被平分k次即可完成查找。也即,在最壞的情況下,查找算法k=log2(n+1)次即可結束。二分查找的平均查找次數為:

用數學歸納法容易證明:

所以

不論查找成功或失敗,二分查找比順序查找要快的多。

3.分塊查找。分塊查找又稱為索引順序查找,他是順序查找算法與二分查找算法的一種結合,其基本思想是:首先把線性表分成若干塊,在每塊中,結點的存放不一定有序,但塊與塊之間必須是分塊有序的。分塊查找方法通過將查找縮小在某個塊中從而提高了查找的效率,其查找的效率由兩部分組成,一是為確定待查找元素所在塊而對索引表查找的平均查找長度E1,二是塊內查找所需的平均查找長度Eb。

若以順序查找來確定分塊,則分塊查找成功時的平均查找長度為:

ASLids=E1+Eb= =((n/s)+s)/2 +1

n:總元素個數 ,b:n個元素被分成的塊數,則每塊中的元素個數就是s=n/b。

若以二分查找來確定分塊,則分塊查找成功時的平均查找長度為:

ASLids= E1+Eb≈log2(n/s +1)+s/2

由此可見,分塊查找比順序查找要快,但比二分查找要慢。

在最壞的情況下,順序查找算法和二分查找算法在解決同一個問題時,兩個算法所需要檢測的分量個數卻大不相同,前者要m=2 k個,后者只要k+1個。可見算法二分查找算法比算法順序查找算法高效得多。

解同一個問題,算法不同,則計算的工作量也不同,所需的計算時間隨之不同,即復雜性不同。上圖是運行這兩種算法的時間曲線。該圖表明,當m適當大(m>m0)時,二分查找算法(B_Search)比順序查找算法(Search)省時,而且當m更大時,節省的時間急劇增加。

四、結 論

我們引入算法復雜性的概念是為了比較解決同一個問題的不同算法的效率,而不想去比較運行該算法的計算機的性能。因而,不應該取算法運行的實例時間作為算法復雜性的尺度。我們希望,盡量單純地反映作為算法精髓的計算方法本身的效率,而且在不實際運行該算法的情況下就能分析出它所需要的時間和空間。

參考文獻:

[1]郭紹忠.基于GPU的單源最短路徑算法的設計與實現.商場現代化,2011,9

[2]李云清.數據結構(C語言版).人民郵電出版社,2006,8

主站蜘蛛池模板: 全部免费毛片免费播放| 久久99精品久久久久久不卡| 欧美19综合中文字幕| 91精品专区国产盗摄| 九九九九热精品视频| 狠狠色丁婷婷综合久久| 亚洲无线视频| A级全黄试看30分钟小视频| 欧美日韩北条麻妃一区二区| 欧美高清国产| 中文字幕波多野不卡一区| 精品无码视频在线观看| 亚洲一道AV无码午夜福利| 亚洲日本精品一区二区| 国产自在自线午夜精品视频| 99国产在线视频| 2020国产精品视频| 强奷白丝美女在线观看| 91精品国产麻豆国产自产在线| 亚洲黄网在线| 亚洲人成网18禁| 中国黄色一级视频| 54pao国产成人免费视频| 国产精品久久久久无码网站| 亚洲品质国产精品无码| 色偷偷一区| 久久99久久无码毛片一区二区| 日韩在线永久免费播放| 国产成人三级| 伦伦影院精品一区| 71pao成人国产永久免费视频| 国产成人精品在线| 71pao成人国产永久免费视频| 99热这里只有精品免费国产| 久久福利网| 制服丝袜在线视频香蕉| 亚洲欧美精品在线| 久久精品免费国产大片| 欧美中文字幕一区| 97青草最新免费精品视频| 亚洲欧美成人综合| 色吊丝av中文字幕| 亚洲精品大秀视频| 91口爆吞精国产对白第三集| 中美日韩在线网免费毛片视频 | 亚洲AV无码久久天堂| 日韩AV无码一区| 久无码久无码av无码| 亚洲婷婷在线视频| 色偷偷一区| 国产91导航| 黄色网在线| 一级全黄毛片| 国产欧美亚洲精品第3页在线| 黄色网址免费在线| 亚洲欧美成人影院| 国产爽歪歪免费视频在线观看 | 大香网伊人久久综合网2020| 亚洲国产成人久久精品软件 | 男女性午夜福利网站| 国产精品欧美在线观看| 国产成本人片免费a∨短片| 毛片免费视频| 精品人妻AV区| 久久综合婷婷| 亚洲男人的天堂视频| 国产精品永久免费嫩草研究院| 热这里只有精品国产热门精品| 九色最新网址| 欧美精品在线免费| 国产精品免费露脸视频| 欧美成人国产| 欧美成人精品在线| 国产麻豆福利av在线播放| 国精品91人妻无码一区二区三区| 国产成人a在线观看视频| 天天摸夜夜操| 国产精品伦视频观看免费| 亚洲欧美一级一级a| 91网站国产| 亚洲国产精品无码AV| 毛片基地视频|