1

我必须传递两个数组 1) 填充了 0-100 之间的 1000 个整数 2) 包含十个 bin 来对 1000 个数字进行排序。

如何创建计数器以将数字分类到十个箱中,例如 0-9、10-19、20-29、30-39、40-49,50-59 等到 90-99...

是否会使用 if/else 对它们进行排序?如果是这样,我如何将值添加到每个 bin 中?会是这样吗?

这是我到目前为止所拥有的:

          //initialize array of 1000 elements
          int[] numbers = new int[1000];
          int i = 0;
          //initialize array of 10 bins
          int[] bins = new int[10];

          void setup() {
              // Populate array with random number
              for (int i = 0; i < numbers.length; i++) {
                 numbers[i] = ceil(random(0,99));
              }

           }

           //function that sorts random numbers into bins
           void counter(int[] numbers, int[] bins) {

           }
4

2 回答 2

3

如果您想要numbers右边的每个数字,bin那么我将使用 10 个ArrayLists的数组作为bins.

int[] numbers = new int[1000];
ArrayList[] bins = new ArrayList[10];

void setup() {
    for(int i = 0; i<bins.length; i++) {
        bins[i] = new ArrayList();
    }

    for (int i = 0; i < numbers.length; i++) {
        numbers[i] = floor(random(0,100));
    }
}

void counter(int[] numbers, ArrayList[] bins) {
    for (int i = 0; i < numbers.length; i++) {
        bins[floor(float(numbers[i])/10.0)].add(numbers[i]);
    }
}

然后你会得到一个 bin(例如,第一个 bin 由值为 0-9 的数字组成):

int sizeBin = bins[0].size();
for(int i=0; i<sizeBin; i++) {
    println(bins[0].get(i));
}

如果你想要一个 bin 中的数字计数,你可以得到它(再次以 bin 0-9 为例)

bins[0].size();
于 2012-10-18T18:31:26.847 回答
2

a 能想到的最简单的方法是使用 for 循环循环遍历 numbers[],然后使用一系列 if 语句来评估数字是否为 <= 9 、 <= 19 等

    void counter(int[] numbers, int[] bins){
    int count = 0;
    int length = numbers.length;
    for(int i = 0; i< length; i++){
       if(numbers[i] <= 9){

          bins[count] = numbers[i];
          count++;
       }
    //and the same for 10-19 etc...
}

像这样的东西?不是很雄辩,但由于数组只有 1000 个元素,它应该足够了

于 2012-10-18T18:14:47.063 回答