離散化有兩種方法:
第一種, 先看一段**:
在這段**中,a經過離散,範圍就變成了m。解釋一下,unique是c++自帶的乙個函式,表示對乙個數列去重,然後返回不重複的元素個數,當然在後面要減去首位址。那麼這種離散化對於有重複元素的數列也可以適用,但複雜度相對後面要講的第二種方法會高些。const int n=1e5+7;
int t[n],a[n];
int main()
舉個栗子
,首先排序後得到,去重,然後原序列就變成了。
第二種,複雜度比上面那一種要優,但不能處理重複元素。
先看**:
這種方法直接用結構體儲存原本的數列的元素的位置,然後排序以後將他們再重新賦值。那麼rank就是結構體a離散化後的結果。const int n=1e5+7;
struct node
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
rank[a[i].id]=i;
}
舉個栗子:
v: 3 6 5 10 8
id:1 2 3 4 5
排序以後:
v: 3 5 6 8 10
id:1 3 2 5 4
所以離散化以後:
v: 3 5 6 8 10
id:1 3 2 5 4
rk:1 2 3 4 5
在按原來的順序排列:
v: 3 6 5 10 8
rk:1 3 2 5 4
**:
資料離散化
一 概述 資料離散化是乙個非常重要的思想。為什麼要離散化?當以權值為下標的時候,有時候值太大,存不下。所以把要離散化的每乙個陣列裡面的數對映到另乙個值小一點的陣列裡面去。打個比方,某個題目告訴你有10 4個數,每個數大小不超過10 10,要你對這些數進行操作,那麼肯定不能直接開10 10大小的陣列,...
資料離散化
今天執行 資料離散化 部分 時出錯,環境python3.6 pycharm,網上各種查詢資料後發現原 主要是三個地方需要修改 下面紅色部分,原有問題 被注釋掉了 修改並新增了部分注釋。coding utf 8 資料規範化 import pandas as pd datafile data discr...
資料離散化
struct data d n 按x排序 sort d,d n for int i 0 i時間複雜度o nlogn 空間複雜度o n 用於無重複資料 lower bound a,a n,x a 1 返回a中第乙個大於等於x的位置 unique a,a 1 n a 1 a,減首位址返回將aa陣列去重後...