Algorithms 练习1.1.15

来源:互联网 发布:重庆警方破获网络诈骗 编辑:程序博客网 时间:2024/06/06 02:11

编写一个静态方法histogram,接受一个int数组a和一个int值M,要求返回大小为M的int数组,其中第i个元素为i在数组a中出现的次数。
代码如下:

import edu.princeton.cs.algs4.StdOut;public class Test {    public static int[] histogram(int[] a, int M){        int[] result = new int[M];        for(int i = 0; i < M; i++){            int number = 0;            for(int element : a){                if(i == element)                    number++;            }            result[i] = number;        }        return result;    }    public static void main(String[] args) {        int[] a = {1, 1, 2, 3, 1, 7, 5, 3, 2, 2, 2};        int M = 8;        int[] result = histogram(a, M);        StdOut.print("a[]: ");        for(int e : result){            StdOut.print(e + " ");        }    }}

jimmy的算法如下:

package com.jimmysun.algorithms.chapter1_1;public class Ex15 {    public static int[] histogram(int[] a, int M) {        int[] result = new int[M];        for (int i = 0; i < a.length; i++) {            if (a[i] >= 0 && a[i] < M) {                result[a[i]]++;            }        }        return result;    }    public static void main(String[] args) {        int[] a = { 1, 1, 2, 3, 1, 7, 5, 3, 2, 2, 2 };        int[] result = histogram(a, 8);        for (int i = 0; i < result.length; i++) {            System.out.printf("%3d", result[i]);        }    }}

可以很明显的看出,jimmy的算法复杂度比我的小了一个级别,还要多多努力。

原创粉丝点击