牛客——获取数组最值

描述

键盘随机输入 6 个整数,将这些数据保存到数组中,获取数组中的最小值和最大值并输出。

输入描述:

键盘随机输入 6 个整数。

输出描述:

输出数组中的最小值和最大值,两个值中间使用空格隔开。

示例1

输入:

5
12
80
7
15
60

输出:

5 80

思路:

1.首先解决一个问题,在数组中,我们通常会遇到,随机输入不定长度的数组,在这种情况下,如何处理才能达到这一效果呢?需要使用sizeof()函数。

sizeof()函数最初的作用就是,计算数据长度的,举个栗子,

int a=3;
sizeof(a);//4
sizeof(int);//4

通常情况下,这两种情况是一样的,but,如果遇到数组,那就另当别论了。比如,该题。

int arr[6]={0};

sizeof(arr);//6 x 4=24

sizeof(int);//4

因此,假如不定长度的数组,便可以用int len=sizeof(arr)/sizeof(int);这一笼统的“万能公式”所代替。

2.如何才能比大小?

先人为设置一个最大值最小值,当然,最方便的就是都设置成第一个数,方便以后遍历,比较。

法一:

int max=arr[0];

int min=arr[0];

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

{

max=max>arr[i]?max:arr[i];

min=min<arr[i]?min:arr[i];

}

这段代码的意思是,人为设定最大值是第一个小房子里的那个值,当循环开始后,每次都将最大值同数组中的值作比较,如果比最大值还大,那么就将该数组值记为最新的max值。最小值同理。

这是最常见的做法。

法二:

int max=0;

int min=0;

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

{

if(arr[max]<arr[i] )       max=i;

if(arr[min]>arr[i])         min=i;

}

cout<<arr[min]<<" "<<arr[max]<<endl;

 法二与法一殊途同归,区别在于,该方法的最大值最小值是顺序,但是比较大小的时候,需要套上数组。即:比较大小,arr[max],arr[i];

                      max,min的值是坐标顺序。

法三:

for(int i=1;i<len;i++)
{ 
 for(int j=0;j<len-i;j++)
  {
   if(arr[j]>arr[j+1])
    {
        int temp=arr[j+1];
        arr[j+1]=arr[j];
        arr[j]=temp;
    }
  }
}

 冒泡排序,yyds,虽然时间会长了一点,但是胜在省事,是一个模板。输出第一个数arr[0],最后一个数arr[len-1];既可。

法四:

#include <algorithm>
sort(arr,arr+len);
cout<<arr[0]<<" "<<arr[len-1]<<endl;

简单且便捷,头文件algorithm中包含各种常用的算法函数,如排序、查找、合并等。这些函数可以用于操作在容器(如向量、列表或数组)中的元素。

而sort()函数,是升序排序。

sort(arr,arr+len);

代表,从数组起始地址指向终止地址。

以上是几种简单的方法,从思路复杂到直接暴算。当然这并不代表前面两种方法就不重要,每一种方法都有自己的可取之处,任何一个细微的小tip,都将有助于你未来理解一个庞然大物。

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值