描述
键盘随机输入 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,都将有助于你未来理解一个庞然大物。