打印

[原创] C++ 算法 求10个或N个数中最大值

C++ 算法 求10个或N个数中最大值

请大家把自己的方法也发上来看看哈 呵呵
和小弟的对比下 最好能有更好的方法哦 我的办法好笨。。。
#include "stdafx.h"
#include <iostream>
int main()
{
using namespace std;
int i,t,n;
i = 1;
t = n = 0;
int x[11] = {20,14,22,10,88,45,78,56,43,28};
do
{
  if(x[ i ] > x[i-1])
  {
   if(x[ i ] > t)
   {
    t = x[ i ];
   }
   else
    t = t;
  }
  else
   if(x[i-1] > n)
      {
       n = x[i-1];
      }
      else
       n = n;
  i++;
}
while(i < 10);
  if(t > n)
   cout << t;
  else
   cout << n;
return 0;
}
上面代码通过编译
小弟不才 还望高手指点  谢谢!!

图片一直上传不了 本来可以看看 算法图片的 呵呵


等能上传了再弄把。。。哎


[ 本帖最后由 mikeshmily 于 2008-4-17 01:09 编辑 ]
http://www.bai-du.cn
QQ 11736569

TOP

C++忘光了
  算法思想说下吧
定义个临时变量 MAX  令Max值等于第一个数的值
然后循环遍历 数组X
如果X>MAX
则令MAX=X
最后输出即可
同意楼上,现在基本都是这个算法
我是小鸟~~高手请帮忙啊~专心学技术

TOP

谢谢各位高手 我又学到了点东西 嘿嘿
呵呵  这个应该不难吧。哈哈

TOP

楼主的代码看得我好糊涂....
看下我得还行吧,通过编译,只要修改 MAX 为N,就可以求得N个数的最大值
#include <stdio.h>
#define  MAX  10

int  name[MAX];
int  ctr;
int  hanshu  ( int  shuzu[ ] , int  cont );
  
int  main(void)
{
  for(ctr=0 ; ctr<MAX ; ctr++)
   {
     printf( "请输入10个数: ");
     scanf( "%d" , &name[ctr]);
    }
printf( "\n最大的数为:%d ", hanshu( name , MAX) );

return  0;
}

int  hanshu ( int  shuzu [ ] ,int  cont  )
{
  int  z , y = -23000 ;
  for ( z = 0; z < cont ; z++)
  {
    if( shuzu [ z ] > y )
      y = shuzu [z];
  }

return y ;
}
楼主我想说下....嵌套太多的 if 语句不是很好的.....
让人看得好累呀....
而且修改起来也不容易....

TOP

多谢各位指点 呵呵 小弟又学会很多知识咯  嘿嘿!!!
http://www.bai-du.cn
QQ 11736569
如果要判断的数不多的话..可以用两个三目运算哦.呵呵....
在网海中沉浮的小鱼!!

TOP

单单找最大值最容易了,从头遍历到尾,一遍就可以找出来的...
{
      int  a[N];         //这里N是你自己定义的..
      ;//下面自己往里面输入值
   int temp=a[0];
      for(int i=1;i<N;i++)
     {
          if(temp<a[ i ])           //如果换成temp>a[ i ]  那最后temp将是最小值..
               temp=a[ i ];
     }
     ;    //temp  就是最大值;
}

所以你可以设两个变量,一个存最大,一个存最小,一趟下去最大最小都出来了..

[ 本帖最后由 minicat 于 2008-5-10 04:02 编辑 ]

Processed in 0.083019 second(s), 5 queries, Gzip enabled