码迷,mamicode.com
首页 > 其他好文 > 详细

"求n个数字中的最大值"的 多种方案,及对多种方案优缺点分析。

时间:2015-10-18 18:39:19      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:选择 方案

如果n是3,输入3个数字,求3个数的最大数:

第一种方案:

利用条件运算符来求解,条件运算符的格式是x?y:z  

x是boolean类型表达式,如果x=true,

则整个条件运算符的结果是y的值,否则是z的值。(((a>b)?a:b))就是得到a,b中的最大值。


int a =1,b=2,c=3;

int h=(((a>b)?a:b)<c)?c:(((a>b)?a:b));

System.out.println("最大的数字是"+h);


第二种方案:

int a=1,b=2,c=3;

if (a>b&&a>c)

//&&是短路与(对逻辑与性能上面的提高)左边为false的时候就不再取计算右边。

 {

 System.out.println("最大的数是"+a);

 }

  else if (b>a&&b>c)

  {

  System.out.println("最大的数是"+b);

  }

   else if (c>a&&c>b)

   {

   System.out.println("最大的数是"+c);

   }

第三种方案:

      int a=1,b=2,c=3;

      int max=a;

 if(max<b)

 {

    max=b;

     if(max<c)

     {

        max=c;

     }   

 }

  else if(max<c)

   {

        max=c;

        if(max<b)

          {

     max=b;

           }

    }

         System.out.println("最大的数是:"+max);

第四种方法,冒泡排序:

          

Scanner s = new Scanner(System.in);

//创建一个数组

 int[] a=new int[3];

 System.out.println("请输入3个数字:");

//为数组赋值

for (int i = 0; i < 3; i++)

 {

 a[i]=s.nextInt();

 }


  for (int i = 0; i < a.length-1; i++)

         冒泡次数是 a.length-1,注意不是i < a.length.

 {

   for (int j = 0; j < a.length-1-i; j++)//对比的次数

                //因为每次冒泡都减少一个对比数,为了减少计算机计算次数再减去i

    {

            if(a[j]>a[j+1])

               // 如果a[j]>a[j+1],就前后换位,否则不换位.即把大的数字放到后面。

          {

           int temp=a[j+1];

           a[j+1]=a[j];

           a[j]=temp;//设一个暂存的数值,用于换位

          }

    }


System.out.println("最大的数是:"+a[a.length-1]);


如果n=5,第一种方案就要修改:

    int a =1,b=2,c=3;d=4,e=5;

             int h=(((a>b)?a:b)<c)?c:(((a>b)?a:b));

                        int i=(((h>d)?h:d)<e)?e:(((h>d)?h:d));

            System.out.println("最大的数字是"+i);

……

如果n的数值很大呢?一直这样一个个对比,显的相当不智能,冒泡排序与前几个方案对比,显得智能得多,创建数组,把要对比的数赋给数组,再冒泡排序(写好算法),最后打印出想要的结果即可。调理清晰,显然当n的数值较大的时是我们的最佳选择。



总结:

  此时是求3个的数的最大数,前三个方案是优越于第四个冒泡排序的方案,第一种方案代码量最少,能最快速的解决问题,所以这时候我们应选择第一种解决方案,第二和第二种方案次之。第二,第三种方案在求比较少量的数字的最大值的时候,逻辑相对更清晰,但n值较大时,就不是最佳方案了。好比如果是求5个数字,甚至更多的数字的时候,前几种方案的代码书写就会显的很拖沓,冒泡排序的优势就明显了,比如无论是从为数字赋值的便利还是明确清晰的思路,还是既定而成的算法来说,都会是我们更好的选择。

  选了非最佳的方案,也许你能完成任务,但也许是走了非常多的弯路,事倍功半。我们是不是也可以由此看出选择比努力重要呢?答案是肯定的。

本文出自 “JavaSE学习与总结” 博客,请务必保留此出处http://iamsmile.blog.51cto.com/10728276/1703987

"求n个数字中的最大值"的 多种方案,及对多种方案优缺点分析。

标签:选择 方案

原文地址:http://iamsmile.blog.51cto.com/10728276/1703987

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!