演算法 有序序列中運用「壓縮」思想

2021-07-29 02:43:45 字數 742 閱讀 3478

我們經常遇到在乙個有序序列中進行一系列的操作,比如查詢某個元素,插入某個元素,刪除某個元素等,這裡的有序序列,可能是線性的一對一的序列,也可能是二叉樹的一對多序列,那麼在面對乙個海量的有序序列時,海量資料往往會壓迫到我們的神經,讓我們沉在資料大海浬。

然後有沒有一種更好的方法,讓我們有針對性地分析這個問題,而不是沉在海量資料中呢? 我們利用有序序列的特點,何不嘗試用根據問題的性質,將海量壓縮為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資料和感測器資料中有大量相同資料...