外部排序ruby實現

2021-09-01 03:25:19 字數 807 閱讀 2948

# value 陣列型別,儲存待比較大小的元素。陣列長度比敗者樹陣列長度大1

# loser_tree 陣列型別,敗者樹。陣列元素是value陣列的索引

# node 待調整的葉子結點在value陣列中的索引

def adjust_loser_tree(value, loser_tree, node)

# 求葉子結點的父結點在敗者樹中的索引

t = (node + loser_tree.size) / 2

while t > 0

if value[node].email > value[loser_tree[t]].email

tmp = node

node = loser_tree[t]

loser_tree[t] = tmp

endt /= 2

endloser_tree[t] = node

end# 建立敗者樹

def create_loser_tree(value, loser_tree)

# 初始化敗者樹陣列

0.upto(loser_tree.size - 1) do |i|

loser_tree[i] = value.size - 1

end(value.size - 2).downto(0) do |i|

adjust_loser_tree(value, loser_tree, i)

endend

value陣列的長度比loser_tree陣列長度大1。

value陣列的最後乙個元素應該賦屈指範圍內的最小值。

外部排序 歸併演算法實現

基本要點 外部排序顧名思義是對外部儲存空間中資料的排序,那為什麼不能像選擇排序 插入排序 快速排序那樣也直接進行排序呢?原因是外部儲存的資料量可能是非常大的,而計算機的記憶體大小要遠遠小於外存,計算機一下子讀不了那麼多資料,無法一次性對它們進行排序,這就是外部排序產生的原因。基本思想 我們這裡借助歸...

選擇排序 ruby

先尋找最小的數與array 0 交換,再尋找第二小的數和array 1 交換。array 31,41,59,26,41,58 0.upto array.length 2 do count min 1000 最小值 index 0 start count while startif array sta...

Ruby排序演算法

1.氣泡排序 百科 wiki def bubble sort arr 1.upto arr.length 1 do i arr.length i times do j if arr j arr j 1 arr j arr j 1 arr j 1 arr j endend endarr endarra...