首页 > 其他 > 详细

离散化

时间:2020-09-17 09:28:19      阅读:41      评论:0      收藏:0      [点我收藏+]
对于数据集中含一些值比较大的数据,可以采用离散化的方法将数据映射到相对较小的范围。如下,将数按大小映射到下标。

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class Main {

    /**
     * 去重有序数组
     * @param arr
     * @return
     */
    private static int[] unique(int[] arr) {

        if (arr == null || arr.length == 0) {
            return new int[0];
        }

        int cursor = 0;

        for (int i = 1; i < arr.length; ++ i) {
            if (arr[i] != arr[cursor]) {
                arr[++ cursor] = arr[i];
            }
        }

        return Arrays.copyOfRange(arr, 0, cursor + 1);
    }

    private static int[] discrete(int[] arr) {

        Arrays.sort(arr);

        return unique(arr);

    }

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        Random random = new Random();

        while (in.hasNext()) {

            int n = in.nextInt();

            int bound = in.nextInt();

            int[] arr = new int[n];

            for (int i = 0; i < n; ++ i) {
                arr[i] = random.nextInt(bound);
            }

            System.out.println("离散化之前");

            Arrays.stream(arr).forEach(System.out::println);

            arr = discrete(arr);

            System.out.println("离散化之后");

            Arrays.stream(arr).forEach(System.out::println);

        }

    }
}

离散化

原文:https://blog.51cto.com/tianyiya/2534243

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!