我們經常遇到在乙個有序序列中進行一系列的操作,比如查詢某個元素,插入某個元素,刪除某個元素等,這裡的有序序列,可能是線性的一對一的序列,也可能是二叉樹的一對多序列,那麼在面對乙個海量的有序序列時,海量資料往往會壓迫到我們的神經,讓我們沉在資料大海浬。
然後有沒有一種更好的方法,讓我們有針對性地分析這個問題,而不是沉在海量資料中呢? 我們利用有序序列的特點,何不嘗試用根據問題的性質,將海量壓縮為1個單元資料呢?
如果乙個序列是這樣的
int sorted[10000] =;
現在要插入元素190,請問怎麼分析這個問題。我們計畫用二分查詢,查詢乙個插入元素的合適的位置,然後放入元素。二分查詢設計到兩個端點,乙個中點,並且原資料是有序的。所以,我們直接壓縮為1個資料,這個資料時中點資料,
n
此時的中點位置為n,所以比較 sorted[n]與 190的大小,假如 sorted[n]小於190, 則 190只可能位於n後,此時的區間自然變為[n+1, 10000),相反,如果sorted[n]大於190,則190只能位於n前,即區間[0, n)處。
兌現為**:
public
static
intsearchinsertlocation(int sorted, int e)
return lo;
}
因此根據有序序列,將大量的資料壓縮為1個或幾個有代表性的資料,可以讓問題變得精簡! 查詢有序序列中 重複 不存在 的數演算法
查詢有序序列中 重複 不存在 的數演算法演示 include include include define func in printf nin s n n function define func out printf nout s n n function 生成乙個長度為len的陣列,其中arr...
刪除有序序列中的重複項
1 刪除有序序列中的重複項 2 已知乙個有序序列,請原地刪除序列中重複出現的元素,返回刪除重複元素後的序列長度。只能使用o 1 額外空間來完成這個任務,例如 eg 0,0,1,1,1,2,2,3,3,4,4,4,5 最終返回長度是6,序列前六個元素是012345 def move multiple ...
壓縮 資料壓縮演算法 編輯中
整個資料壓縮方法包括列式壓縮 資料int化 字首提取 混合編碼和邊界值處理方案。具體來說 一 列式 列式壓縮可以把具有相同特徵的資料聚在一起,選擇最優的資料壓縮和處理方式。二 資料int化 資料使用int型別的格式,可以最大化壓縮資料的位元組數。三 字首提取 將gps資料和感測器資料中有大量相同資料...