找众数

众数(Mode)统计学名词,在统计分布上具有明显集中趋势点的数值,代表数据的一般水平(众数可以不存在或多于一个)。 一般来说,一组数据中,出现次数最多的数就叫这组数据的众数。 例如:1,2,3,3,4的众数是3。 但是,如果有两个或两个以上个数出现次数都是最多的,那么这几个数都是这组数据的众数。 例如:1,2,2,3,3,4的众数是2和3。 还有,如果所有数据出现的次数都一样,那么这组数据没有众数。 例如:1,2,3,4,5没有众数。

从小到大输入10个整数,输出这10个数中的众数

参考解答

public static void findMode(int[] numbers) {
  int[] counts = new int[numbers.length]; // 存储个数
  int last = numbers[0];
  int lastIndex = 0;
  int maxCount = 0;
  for (int i = 0; i < numbers.length; i++) {
    if (last != numbers[i]) {
      last = numbers[i];
      lastIndex = i;
    }
    counts[lastIndex]++;
    if (counts[lastIndex] > maxCount) {
      maxCount = counts[lastIndex];
    }
  }
  System.out.println(Arrays.toString(numbers));
  System.out.println(Arrays.toString(counts));
  if (maxCount == 1) {
    System.out.println("没有众数");
  } else {
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < counts.length; i++) {
      if (counts[i] == maxCount) {
        sb.append(numbers[i]).append(",");
      }
    }
    System.out.println(sb.deleteCharAt(sb.length() - 1));
  }
}

public static void main(String[] args) {
  int[] numbers = { 1, 2, 2, 2, 3, 4, 5, 10, 10, 10 };
  findMode(numbers);
  numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
  findMode(numbers);
}

results matching ""

    No results matching ""