Sandomhet

Discretization

transform continuous numbers to discrete numbers

Thu, Feb 1, 2024 1 min read

Discretization

Replace each value by its rank among the distinct values: sort, unique, then lower_bound. Order is preserved and values become 1..len1..len. O(nlog⁡n)O(n \log n)

int ls[Z], len;
void discrete(int num[], int nm) {
    for (int i = 1; i <= nm; i++)    ls[i] = num[i];//转移临时数组
    sort(ls + 1, ls + 1 + nm);//排序
    len = unique(ls + 1, ls + 1 + nm) - ls - 1;//去重
    for (int i = 1; i <= nm; i++)//离散
        num[i] = lower_bound(ls + 1, ls + 1 + len, num[i]) - ls;
}
Search

Loading search…