程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java得到數組中最有效的元素和下標

Java得到數組中最有效的元素和下標

編輯:關於JAVA

先看代碼

import java.util.Arrays;

/**
* 得到數組中最有效的元素和下標.<br>
* 最有效的只出現頻率超過長度一半的數據。
*
* @author 趙學慶 www.java2000.net
*/
public class MyTest {
 public static void main(String[] args) {
  int[] values = new int[] { 5, 3, 5, -5, 5, 0, 5 };
  int maxValue = getMax(values);
  if (maxValue > Integer.MIN_VALUE) {
   System.out.println("Number=" + maxValue);
   for (int i = 0; i < values.length; i++) {
    if (values[i] == maxValue) {
     System.out.print(i + " ");
    }
   }
  } else {
   System.out.println("沒有找到");
  }
 }

 public static int getMax(int[] values) {
  int[] nums = Arrays.copyOf(values, values.length);
  Arrays.sort(nums);
  int number = Integer.MIN_VALUE;
  int count = 0;
  int numbertemp = Integer.MIN_VALUE;
  int counttemp = 0;
  for (int num : nums) {
   if (num == numbertemp) {
    // 增加當前
    counttemp++;
   } else {
    // 判斷是否比前一個大
    if (counttemp > count) {
     number = numbertemp;
     count = counttemp;
    }
    // 設置當前
    numbertemp = num;
    counttemp = 1;
   }
  }
  // 判斷是否比前一個大
  if (counttemp > count) {
   number = numbertemp;
   count = counttemp;
  }
  if (1.0 * count / nums.length > 0.5) {
   return number;
  }
  return Integer.MIN_VALUE;
 }
}

運行結果

Number=5
0 2 4 6

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved