N的平方次迴圈換算N X次迴圈

2021-08-26 22:22:04 字數 1002 閱讀 7161

class geoinfo

attr :lat,:lng

endarr = geoinfo.find(:all)

這裡有個geoinfo(地理資訊)類,分別有兩個屬性lat,lng(緯度,經度)。

我獲得了資料庫中所有的地理資料,由於需求這些地理資料會出現大量座標相同的情況,現在我根據需求,需要把位置相同的資料放在同乙個陣列中,最後獲取乙個新的陣列。

arr_re = 

arr.each_with_index do |geo_a,index_a|

fg = true

arr_fg = [geo_a]

arr.each_with_index do |geo_b,index_b|

if geo_a.lat == geo_b.lat && geo_a.lng == geo_b.lng && index_a != index_b

arr_fg << geo_b

fg = false if index_a > index_b

endend

arr_re << arr_fg if fg

end

以上,**是按照最初的想法實現,需要進行arr.size的平方次迴圈判斷,需要消耗大量的時間來迴圈。如果資料有100條,那將要迴圈10000次才能拿到想要的結果。

map_fg = {}

arr.each do |a|

if map_fg["#;#"]

map_fg["#;#"] << a

else

map_fg["#;#"] = [a]

endendarr_re =

for k,v in map_fg do

arr_re << v

end

以上,**使用hash儲存,使用更大的空間換取迴圈次數的減少。如果有一百條資料,其中有10條重複資料,則只需要100+(100-10)次迴圈。

優劣立現。

python迴圈語句c次 python迴圈語句

同其他許多的高階程式語言一樣,python也提供了迴圈語句,這樣可以方便地進行許多相同的操作。python中的迴圈語句包括for迴圈和while迴圈。1 for迴圈 for語句用來遍歷序列物件內的元素,並對每個元素執行乙個 塊。其格式如下 for變數名 in序列 語句塊 案例 列印出100以內的兩位...

在Pythonfor迴圈中如何獲取迴圈次數?

在python的for迴圈裡,迴圈遍歷可以寫成 for item in list print item 它可以遍歷列表中的所有元素,但是有什麼方法可以知道到目前為止我迴圈了多少次?想到的替代方案是 count 0 for item in list print item count 1 if coun...

迴圈多少次? 1799

problem description 我們知道,在程式設計中,我們時常需要考慮到時間複雜度,特別是對於迴圈的部分。例如,如果 中出現 for i 1 i n i op 那麼做了n次op運算,如果 中出現 fori 1 i n i for j i 1 j n j op 那麼做了n n 1 2 次op...