Topic: 提问!(一维数组中求最大值的出现次数和位置)

  Print this page

1.提问!(一维数组中求最大值的出现次数和位置) Copy to clipboard
Posted by: 黑玫瑰之吻
Posted on: 2005-07-15 13:12

请使用准确的文字描述作为标题
Your next post without a proper Subject will be removed.

Original subject :
提问!有问题请哥哥们解答


提问!有问题请哥哥们解答
有N个正整数,放入一维数组中,求:
1,找出最大值。
2,最大值出现的次数。
3,最大值出现的位置。
4,找出下一个最大值。
5,然后在求下个最大值出现的次数和位置
6,一直到最后一个数为止

public class SearchMax
{
static void max(int i[])
{int maxvalue=0;
int count=0;
boolean printnum=false;
for(int j=0;j<m.length;j++)//找出最大数
{ if(maxvalue<i[j])
{maxvalue=i[j];}
}//for
System.out.print(maxvalue+"");
for(int k=0;k<m.length;k++)
{
if(maxvalue==i[k])
System.our.print(k+",");//找出最大数的位置
count++;
}
System.out.print(count++"/n");//最大数出现的次数
}

public static void main(Stirng args[])
{
int m[]={6,7,5,6,4,7,8,8};
maxMusic;
}
}

大致写好了这个程序,就是不会判定找下个最大数直到最后一个数,请大家解答,谢谢

2.Re:提问!有问题请哥哥们解答 [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: mesocool
Posted on: 2005-07-15 13:54

我觉得你可以做一个新数组, 按照大小顺序排起来, 然后在根据其中的值回到原来的数组找位置..

3.Re:提问!(一维数组中求最大值的出现次数和位置) [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: 22750124
Posted on: 2005-07-15 23:35


public class SearchMax
{
  public static void max(int i[])
  {
    int maxvalue=0;
    int count=0;
    boolean printnum=false;
    
    for(int j=0;j<i.length;j++)//找出最大数
    {
      if(maxvalue<=i[j])
      {
        maxvalue=i[j];
      }
    }//for
    
    System.out.println("数组最大数:"+maxvalue);
    
    for(int k=0;k<i.length;k++)
    {
      if(maxvalue==i[k])
      {
        System.out.println("数组最大数的下标为:"+k);//找出最大数的位置
        count++;
      }      
    }
    
    System.out.println("数组最大数出现的次数:"+count);//最大数出现的次数
  }
  
  public static void main(String args[])
  {
    int m[]={6,7,5,6,4,7,8,8};
    maxMusic;
  }
}

这样就OK了方法很多,建议main方法写在其它类中

4.Re:提问!(一维数组中求最大值的出现次数和位置) [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: bohui0714
Posted on: 2005-07-16 16:17


import java.util.Arrays;
public class SearchMax
{
public static void max(int i[])
{
//int maxvalue=0;
int count=0;
int countm=0;
//boolean printnum=false;

/*for(int j=0;j<i.length;j++)//找出最大数
{
if(maxvalue<=i[j])
{
maxvalue=i[j];
}
}//for */
if (i == null || i.length == 0)
throw new IllegalArgumentException("Parameter array should not be NULL");
int[] j=new int[i.length];
int t;
for (int n=0;n<i.length;n++)
{
  j[n]=i[n];
}
Arrays.sort(j);
for (int m=j.length-1;m>=0;m--){
  if (m<j.length-1 && j[m]==j[m+1]) continue;
   System.out.println("数组最大数:"+j[m]);   
   countm++;
   for(int k=0;k<i.length;k++)
   {
   if(j[m]==i[k])
   {
   System.out.println("数组的第" + countm +"个最大数的下标为:"+k);//找出最大数的位置
   count++;
   }
   }   
   System.out.println("数组的第" + countm +"个最大数出现的次数:"+count);//最大数出现的次数
   count=0;
}
}
public static void main(String args[])
{
int s[]={6,7,5,6,4,7,8,8};
max Moon ;
}
}

5.Re:提问!(一维数组中求最大值的出现次数和位置) [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: 黑玫瑰之吻
Posted on: 2005-07-18 11:17

谢谢你们,大致了解了

6.更正了一下 [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: 五个人
Posted on: 2005-07-22 18:07


public class SearchMax {
  public static void max(int i[])
   {
  
   int t=0;
   int mini=-100;
   int num=0;
   boolean flag=true;
   while(flag)
   { int maxvalue=0;
   int count=0;
     for(int j=0;j<i.length;j++) //找出最大数
  
   {
   if(maxvalue<=i[j])
   {
   maxvalue=i[j];
   }
   }//for
  
   System.out.println("第"+(++t)+"大的数:"+maxvalue);
  
   for(int k=0;k<i.length;k++)
   {
   if(maxvalue==i[k])
   {
   System.out.println("第"+t+"大的数的下标为:"+k);//找出最大数的位置
   count++;i[k]=mini;
   }
   }
   num=num+count;
   System.out.println("第"+t+"大的数出现的次数:"+count);//最大数出?的次数
   if(i.length-num==0) flag=false;
}
  
  }
  
   public static void main(String args[])
   {
   int m[]={6,7,5,6,4,7,8,8};
   maxMusic;
   }

}


{ Please use [ code ] tag. }

7.Re:提问!(一维数组中求最大值的出现次数和位置) [Re: 黑玫瑰之吻] Copy to clipboard
Posted by: 1047
Posted on: 2005-08-05 10:23

将数组先从大到小排序再计算可能用省些事吧


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923