資料離散化處理

2021-09-26 06:20:42 字數 958 閱讀 8651

離散化處理有幾個方法:

方法一:

適用於所有情況(sort + unique + lower_bound)三段式:(關於這幾個函式請見我的另一篇部落格)

1、申請兩個陣列num和numcopy(這個陣列是num的副本)

2、利用unique函式對num陣列進行去重

3、利用lower_bound函式獲得numcopy中每個元素的相對位置

#include

#include

using

namespace std;

int num[

1001

],numcopy[

1001

],ans[

1001];

intmain()

sort

(num,num+n)

;//需要排序

for(

int i=

0;i) cout<

<<

" ";

cout<

int l=

unique

(num,num+n)

-num;

//去重後的個數

cout<<

"去重後的個數為:"

<

cout<

for(

int i=

0;i) cout<

<<

" ";

cout<

for(

int i=

0;i)//注意這裡是i

cout<

}

輸出結果為:

方法二:

啊,先鴿著~

資料離散化處理

離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 例如有時需要將資料直接作為陣列下標,但因為資料太大而無法開陣列時,...

資料離散化處理

有時候,我們需要使用陣列下標來維護某些資料結構 例如並查集 但如果資料範圍太大我們開不了這麼大的陣列,這時候,我們就要將資料進行離散化。例如資料我們可以根據相對大小關係67542347 75331434 87433476 99844531來開乙個新陣列編號,二分查詢在新陣列裡的編號。如b 1 675...

資料離散化處理

離散化,把無限空間中有限的個體對映到有限的空間中去,以此提高演算法的時空效率。通俗的說,離散化是在不改變資料相對大小的條件下,對資料進行相應的縮小。例如 原資料 1,999,100000,15 處理後 1,3,4,2 原資料 處理後 用法 很多演算法的複雜度與資料中的最大值有關,比如樹狀陣列和純用陣...