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中的求最值问题,求指点~~~~~~~~~的主要内容,如果未能解决你的问题,请参考以下文章

Python String型列表求最值的问题

5个数求最值

常用算法——“打擂台”求最值

区间求最值 线段树

动态规划只能用来求最值吗?

三分算法求最值