9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學習啦 > 論文大全 > 畢業論文 > 理學論文 > 數學 >

計數查找算法的研究

時間: 若木1 分享
摘 要 查找第K大的元素的問題在計算機查找計數中占有很重要的地位。若直接進行排序,則算法平均時間復雜度為O(N*Lg(N))。但是比較好的策略有求第K大的元素的經典算法——基于分治思想的Divide-Select [1][6],算法的時間復雜度為O(6.09*N ) [5]。由于基于比較的排序算法在最壞的情況之下,都需要進行N*Lg(N)次比較[3],故本文提出了一種基于非比較算法的無符號整數查找算法——Count-Search(計數查找算法)。該算法應用于無符號整數的查找,算法的平均時間復雜度為O( 2*N )
關鍵字 非比較;查找;排序;時間復雜度;計數;整數

1 算法的基本思想

通常的排序算法在空間和時間復雜度一定的情況下的時間開銷主要是關鍵字之間的比較和記錄的移動。基于計數排序的查找算法(Count-Search)的實現在整個過程無需進行數據的比較,算法的時間復雜度為O( 2*N )。該算法的基本原理是:
根據無符號整數的大小可以和數組元素的下標對應的原則,在程序中可以用整數數組來儲存元素的大小關系。對于一個大小為N的整型數組a[],對于每一個元素x,用數組中的元素a[x]記錄下小于等于它的元素個數,當要找的是集合中第K個大的元素時,則只需找到該數組中第N-K+1小的元素。即只需要找到該數組中第一個大于或等于 N-K+1的元素,該元素的下標即為第K大的數。
該算法具體可以描述為:假設n個輸入元素的每一個都是介于0到M之間的整數,此處M為某個無符號整數。
(1) 對于每一個輸入的元素X,首先確定出等于X的元素個數。
(2) 對于每一個元素X,確定小于等于X的元素個數。
(3) 從數組首地址出發順序查找到第一個小于等于K的元素,則該元素X即為所要查找的第K小的數,順序查找到第一個小于等于N-K+1的元素,則該元素X即為所要查找的第K大的數。

2 計數查找算法的C語言實現(Count—Search)

2.1 數據結構的設計與程序

假定輸入的數組為整型數組A[1..N],length[A]=N,數組中元素最大值為M,數組C[]記錄整數元素的大小關系。
Count-Search(int* A,int K)
memest(C,0)//C[0..M]==0初始化C[]
for j=1 to length[A]
do C[A[j]]=C[A[j]]+1
//C[i]包含等于i的元素個數
for i=1 to M
begin
do C[i] = C[i]+C[i-1] //C[i]包含小于等于i的元素個數
if( C[i]>= N-K+1 ) break;//尋找到第N-K+1的元素,即為第K大的元素
end

2.2 算法步驟分析

第一步:第一行的初始化操作之后,在2-3行檢查每一個輸入元素。如果一個輸入元素的值為i,即C[i]的值加1 。于是在第3行之后,C[i]中存放了等于i的元素個數(整數i=0,1,…M)。
第二步:在第4-8之后,C[i]存放了小于等于i的元素的個數。最后從數組C的首地址出發順序查找第一個使得C[i]>=N-K+1的元素,則第K大的元素即為i 。
下圖給出了Count-Search的運算過程:圖1表示初始數組A,C。圖2表示運行完程序 2-3行,數組C中的元素C[i]存放的是數組A中等于i的元素個數。圖3表示運行4-8行的結果,C中元素C[i]存放的是數組A中小于等于i的元素個數。例如查找該數組第3大的數,則由于C[2]=4>=3,故元素2即為所要查找的第3大的數。
2.3 時間復雜度分析
程序2-3行時間復雜度為O(N),第4-8行時間復雜度為O(M),該算法的時間復雜度為T(n)= O( N+M)。如果數組A[]的最大值M與N成線形關系,即M=O(n),則其時間復雜度為T(n) = O( 2N)。

3 Count-Search算法與Divide-Select算法的比較


Divide-Select 的基本思想是:通過在線性的時間內找到一個劃分基準,使得按這個基準所劃分出的兩個子數組的長度都至少為原數組的ξ倍(0<ξ<1是某個正常數),然后對子數組遞歸的調用Divide-Select算法,這樣就可以在線性的時間內完成查找任務。[6]
該算法得時間復雜度為O(6.09*N)[5],與Count-Search算法相比較可知:Count-Search算法具有更好的時間復雜度。

4 算法測試與比較

為了證實上述結論,在ACER TravelMate 2420 (PM730,512M內存,80G硬盤),Windows XP 平臺上編寫了三種查找算法的子程序,進行了相應的實驗測定,其結果如表1 所示。(實驗數據全部采用均分布的無符號整型隨機數)
表1
數據規模
2*10^5
8*10^5
10^6
2*10^6
8*10^6
10^7
8*10^7
快速排序的查找(qsort)
63
219
265
579
2203
2766
62437
Divide- Select
31
109
140
329
1157
1347
11732
Count-Search
15
16
31
31
187
203
1344

注:以上時間單位為毫秒MS。
根據以上數據我們可以繪制出數據規模和時間的函數圖像。
觀察分析以上實驗結果,可以看出:基于快速排序的查找算法和其他算法相比較具有較差的效率;而采用了分治策略的Divide- Select查找算法的效率可以是基于快速排序的查找算法的幾十倍,其時間復雜度在圖中也反映為線性。而基于計數排序的查找算法(Count- Search)的時間復雜度同樣達到了線性,但是效率卻比Divide-Select更高,通過上述實驗可以得知:在進行無符號整數查找時,基于計數排序的查找算法(Count-Search)在時間上是最優的。

5 Count-Search的應用范圍

在查找無符號整數集合時,應用Count-Search算法,能夠降低查找時間復雜度。但是應用Count-Search算法時要注意:該算法只適用于整數的查找,且查找集合S的最大值M與S中元素個數N不成指數關系,即M 不能遠大于N。因為當M過大時,首先內存開銷就會很大,其次時間復雜度也會相應的提高。
該算法充分的運用了整數的特性,整個運算過程中無需數據的比較和交換,大大降低了算法的時間復雜度,因此該算法可以在工程統計中得到大規模運用。例如:隨著網絡的發展和應用,網絡中的信息量成倍的擴大,而在其中我們關注的最多的則是統計排名比較靠前的信息,如果將全部過億的統計量排序,則由于數據量過大,則會浪費大量的時間和資源。而采用Count-Search的查找算法,就可在線性的時間完成。

6 結束語

本文中提出的一種基于計數排序算法的整數查找算法,該算法在運算過程中無需進行數據的比較和交換,該算法可以應用到大規模的整數查找,算法的時間復雜度很低,而且避免的大量的數據比較和交換,同時在時間上是最優的。

參考文獻

[1]崔澤鵬,李偉生. EREW PRAM模型上指數級分割待處理數據集的并行多選算法[J].北方交通大學學報,2003,(2):46-49
[2]班志杰,高光來. 一種Byte查找第K個元素的算法研究[J]. 內蒙古大學學報,2004,(3):322-324
[3]Thomas H.Cormen Charles E.Leiserson. 《算法導論》[M]. 北京:機械工業出版社。2006.9:98-99
[4]Muhammad H.Alsuwaiyel. An optimal parallel algorithm for the multiselection problem[J]. Parallel Computing,2001,(27):861—865
[5]江華. 求第K個元素的快速排序算法[J]. 韶關學院報,2003,(6):32-34
[6]王曉東.《算法設計與分析》[M] .北京:清華大學出版社,2003.1:39-43
2486 主站蜘蛛池模板: 国产精品一二三区久久狼| 日本久久香蕉一本一道| 人妻精品久久无码区| 日韩有码中文字幕第一页| 377P欧洲日本亚洲大胆| 亚洲AV熟妇在线观看| 吉川爱美一区二区三区视频| 国产jlzzjlzz视频免费看| 综合亚洲网| 久久亚洲av成人无码软件| 精品国产熟女一区二区三区| 无码日韩做暖暖大全免费不卡| 国产精品视频中文字幕| 毛片久久网站小视频| 久久青青草原精品国产app| 日韩精品福利视频在线观看| 日韩av中文字幕有码| 国产制服丝袜无码视频| 国产精品久久久福利| 乱色欧美激惰| 麻豆国产va免费精品高清在线| 亚洲中文字幕无码不卡电影| 四虎网址| 欧美丰满熟妇性xxxx| 国产首页一区二区不卡| 制服丝袜长腿无码专区第一页 | 啊轻点灬大JI巴太粗太长了在线| 好紧好湿好黄的视频| 久9re热视频这里只有精品免费| 日本亚洲色大成网站www久久| 99国产精品自在自在久久| 草草浮力影院| 国产高清在线精品一区| 色综合AV综合无码综合网站| 国产蜜臀久久av一区二区| 国产精品午夜av福利| 天天综合天天添夜夜添狠狠添| 99久久亚洲综合精品成人网| 亚洲av第三区国产精品| 国产成人精选视频在线观看不卡 | 亚洲的天堂在线中文字幕|