排行榜功能的思考點

%% 算法設計需要考慮的點
%% 能夠解決業務問題,高效(大流量應用)穩定(穩定體現在哪些方面呢?不會因爲數據量太大,導致效率變差)
%% 確定算法的選型和數據結構的選型
%% 全面分析任務對數據處理和計算的基本操作,根據基本操作中的優劣去選用合適的數據結構
%% 全面分析代碼消耗的資源是什麼(時間複雜度+空間複雜度)| 關注時間和空間消耗與輸入量之間的關係
%% 時間複雜度和代碼設計結構以及數據結構有緊密的關係
%% 怎麼剔除的無效數據;時空轉換


%% 1.對數據的操作有哪些  -> 排序,查找,刪除
%% 2.時間複雜度是多少
%% 3.空間複雜度是多少
%% 4.數據的輸入量是多少
%% 5.數據處理能夠接受的時間是多少
%% 6.不能出現時間爆炸和空間爆炸
%%        (空間爆炸是什麼意思?分爲兩種考慮,
%%              第一種如果消息沒有及時處理,導致發送的消息保存在內存中,在erlang中的表現就是大量的mailbox堆積
%%              第二種因爲用空間換時間,導致空間佔用過大,導致內存分配不足:如dialyzer的處理,先預處理了很多東西,導致dialyzer失敗,內存分配過大奔潰)
%%


%% 排行榜處理的基本思路
%% 第一步:將之前保存的玩家數據列表更新
%% 1.1 循環遍歷需要更新的玩家列表
%% 1.2 循環遍歷總的玩家列表數據,找到相同的玩家id,並在總的玩家列表中替換爲最新的數據,如果沒有,則新增到這個總玩家列表中
%%     操作:查找,新增,改動
%%      高頻的使用查找,新增,改動,要在O(1)的時間複雜度內完成查找動作,只有字典類型-- 待選的數據結構可以使用map數據結構
%% 第二步:對最新的排行榜數據進行排序,是一個列表
%% 2.1 對列表進行排序

%% 數據的操作
%% 1.查找,刪除,新增,全部返回
%% 1.1 查找,新增,改動 可以用map算是實現O(1)的操作
%% 1.2 全部返回,如果保存在一個列表中是可以全部返回的

%% 業務需求
%% 1.原始數據有序,改變的數據有序
%% 2.將兩個有序的數組進行重新排序


%% 排行榜分析
%% 1.這段代碼對數據進行了那些操作
%% - 查找數據,新增數據,修改數據,刪除數據,以及數據排序
%% 2.這些操作中,那個操作最影響效率,對時間複雜度的損耗最大
%% - 修改數據和排序數據(查找數據,新增數據)
%% 3.那種數據結構能夠幫助你提高數據操作的使用效率
%% - map結構可以解決前面的查找,新增,刪除數據;但是排序的處理差異比較大

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章