java中的求最值问题,求指点~~~~~~~~~
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中的求最值问题,求指点~~~~~~~~~相关的知识,希望对你有一定的参考价值。
有数组元素a[0],a[1],a[2],a[3],a[4],a[5],假设这六个都是已经被赋值了的整形的元素。我现在要找出最大的前三个值,比如第一大是a[2],第二大是a[5],第三大是a[0],请问该怎么写程序啊~~~~(不是用冒泡法排序,不交换元素之间的值,只求最大的三个)
我刚写好的一个函数,传给我一个数组,我返回给你最大值的3个索引int[] max_Value(int []a)
int []value = new int[3];
int length = a.length;
int temp = 0; //一次对比的临时变量
int pass1 = -1, pass2 = -1; //用来标记并跳过对比的最大值
for(int count=0; count<3; count++)
temp = 0;
//这个for 用来去数组里的最大值
for(int i=0; i<length; i++)
//用来标记,排除2个已经对比过的最大值
if( i == pass1 )
continue;
if( i == pass2 )
continue;
if(a[i]>temp)
temp = a[i];
//这个for用来计算出当前最大值的索引
for(int x=0; x<length; x++)
//用来标记,排除2个已经对比过的最大值
if( x == pass1 )
continue;
if( x == pass2 )
continue;
if(a[x] == temp)
value[count] = x;
if( pass1 ==-1 )
pass1 = x;
else
pass2 = x;
break;
return value;
参考技术A 一个一个找呗,这是最快的:
public class Demo
public staic void main (String args[])
int[] a = 5, 3 ,1 ,8, 4, 2;
int max = 0, secondMax = 0, thirdMax = 0;
for (int i=0; i<a.length; i++)
if (a[i] > a[max])
max = i;
for (int i=0; i<a.length; i++)
if (a[i] > a[secondMax] && i != max)
secondMax = i;
for (int i=0; i<a.length; i++)
if (a[i] > a[thirdMax] && i != max && i != secondMax)
thirdMax = i;
System.out.println(a[max] + " " + a[secondmax] + " " + a[thirdMax]);
参考技术B import java.util.ArrayList;
public class TestDemo
public static void main(String[] args)
int[] a=12,35,8,25,14,3;
int max=0;
int s=0;
ArrayList<Integer> al=new ArrayList<Integer>();
for(int i=0 ; i<a.length ; i++)
al.add(a[i]);
while(s++<3)
int index=0;
for(int i=0 ; i<al.size() ;i++)
if(al.get(i)>max)
max=al.get(i);
index=i;
max=0;
System.out.println(al.remove(index));
不知道,我这样写可以不,lz可以运行下,看是不是你想要的 参考技术C import java.util.Arrays;
public class Test
public static void main(String[] args)
int[] n = 5, 8, 10, 1, 55, 30, 89;
Arrays.sort(n);
for(int i = n.length - 1; i >= n.length - 3; i--)
System.out.print(n[i] + " ");
参考技术D import java.util.Set;
import java.util.TreeSet;
import java.io.*;
import java.util.Iterator;
class StorForInteger
public static void main(String args[]) throws Exception
int[] arr = new int[]1,4,2,9,0;
TreeSet ts = new TreeSet();
for(int i=0;i<arr.length;i++)
ts.add(arr[i]);
for(int i=0;i<3;i++)
System.out.print(ts.last()+" ");
ts.remove(ts.last());
以上是关于java中的求最值问题,求指点~~~~~~~~~的主要内容,如果未能解决你的问题,请参考以下文章