先看代码
-
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
<script type=”text/javascript”>
</script> <script type=”text/javascript” src=”http://pagead2.googlesyndication.com/pagead/show_ads.js”> </script>
版权声明:本文为java2000_net原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。