日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法导论之排序和顺序统计学

發(fā)布時間:2025/4/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法导论之排序和顺序统计学 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

排序:對N個數的序列重排過程。待排序的數,一般是選擇記錄中數據集的關鍵字key作為排序的值,而數據集中其他數據(稱為:衛(wèi)星數據)以key為中心移動。實際上,對于排序過程中,key的移動和交換,衛(wèi)星數據并不定跟著,只要記錄的指針隨key交換即可,將數據移動量減小到最小。

關鍵字和衛(wèi)星數據所構成的數據集,在實際排序應用中,不單只關注關鍵字序列,還關心衛(wèi)星數據的存儲結構,在選用具體排序算法中有一定考量。排序算法分為:

1)比較排序:插入排序、合并排序、堆排序、快速排序,對數組中的元素進行比較來實現排序;

2)非比較排序:計數排序、基數排序,利用非比較的其他方法來獲得數組的排序信息;

每種排序算法都要考量其運行時間和存儲空間的性能,各有其應用優(yōu)點。插入排序的最壞情況運行時


1)Maximum(S),返回S中最大關鍵字的元素,在最大堆A中返回根節(jié)點即可,算法如下:

Fun_heap_maximum(A){

???return A[1];

}

2)Extract_max(S),去掉并返回S中最大關鍵字的元素,在最大堆A中去掉最大值后需要重新調整保持最大堆性質,算法如下:

Fun_heap_extractmax(A){

???max=A[1];//返回最大值

???A[1]=A[heapsize[A]];//將最后一個節(jié)點的值,交換到第一個節(jié)點

???Heapsize[A]= Heapsize[A]-1;//堆大小減1

???Fun_max_heapify(A,1);//保持最大堆性質函數

???return max;

}

Fun_max_heapify(A,i){

???l=left(i);

???r=right(i);

???if l<=heapsize[A] and A[l]>A[i]

??????? then largest=l

??????? else largest=i

???if r<=heapsize[A] and A[r]>A[largest]

??????? then largest=r

???if largest ≠ i

??????? then exchange(A[i],A[largest])

???????????? Fun_max_heapify(A,largest)

}

3)IncreaseKey(S,x,k),將元素x的關鍵字的值增加到k,在最大堆A中操作就是賦值x元素的新關鍵字值,并保持堆性質,算法如下:

Fun_heap_IncreaseKey(A,i,key){

???A[i]=key;//賦值key

???while i>1 and A[parent(i)]<A[i]

??????? do exchange(A[i],A[parent(i)]

??????? i=parent[i]

}

4)Insert(S,x),新增元素x到集合S,即是插入一個元素關鍵字key到一個已建成的最大堆A中,插入算法如下:

Fun_maxHeap_Insert(A,key){

??? heapsize[A]=heapsize[A]+1;//堆大小加1

??? A[heapsize[A]]=-∞;//新增葉節(jié)點,關鍵值為負無窮大

???Fun_heap_IncreaseKey(A, heapsize[A],key);//新增葉子節(jié)點插入的值,可按照IncreaseKey來操作

}

最小優(yōu)先級隊列支持的操作類似,應用最小堆,用在基于事件驅動的模擬器中。






















總結

以上是生活随笔為你收集整理的算法导论之排序和顺序统计学的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。