定义一个数组最大值和最小值元素互换

一、先理解题义
1、分析
这个编程题的难度是最简单的一个,意思就是把最大值赋值给最小值,把最小值变成最大值,要解这个题首先得定义一个数组,之后呢我们不用遍历把最大值求出来在把最小值求出来,首先要先想着怎么简单怎么来,编程就是以最小的付出,获得最大的回报,我们只需用Arrays里的sort方法排序,先定义数组,然后用排序方法把让数组里的整数内容从小到大1-9排序,然后起始的索引值0就是最小值,排序后最后一个就是最大值了,也就是数组名.length-1,为什么要-1呢,因为索引值是从0开始,而且计算长度是1开始,索引值正好比长度少1所以要-1,如果不减一就索引值越界了,分析完毕之后n那么第二步就是元素转换了,在转换之前我们要先进行分析,他能不能直接:
最大值=最小值 之后
最小值=最大值
这样做是不可以的,因为最大值也是一个可以边的量,他在第一步max=min的时候,已经给最大值重新赋值了一下,赋值成了最小值,这是把最大值转换成了最小值,当然这一步可以成功转换,但是当你最小值转换最大值的时候有没有想过,他已经没有最大值了,因为最大值原来的量已经变了,重新赋值成了最小值,所以第二步 最小值=最大值的时候真是的情况是这个min=min这样并没有成功转换,那么我们该怎么办呢?

2、解决赋值问题
1、这个问题的根源是原来的最大值没了,所以我们在最大值重新赋值之前,设定一个新的变量,让这个新变量tmp附上没转换之前的最大值max,相当于赋值了一份最大值,存储到了新变量里面,然后就这样赋值就可以了:
int tmp=数组名称[数组名称.length-1]
//开始转换,最大值转换成最小值
数组名称[数组名称.length-1]=数组名称[0];
//最小值转换最大值
数组名称[0]=tmp;
这样做就可以了,如果不相信可以用输出语句在转换之前把最大值和最小值输出一遍,然后在最转换之后输出一遍就可以了
二、答案
public class SKT {
public static void main(String[] args) {
int[] a={3,5,1,2,7,108};
Arrays.sort(a);
int sum=a[a.length-1];
a[a.length-1]=a[0];
a[0]=sum;
System.out.println(a[a.length-1]);
System.out.println(a[0]);
}
}
如果上面文本看不清还有图:


image.png

好了,这个题就这么结束了,希望我的思路对大家有帮助,新手上路,且善待。

你可能感兴趣的:(定义一个数组最大值和最小值元素互换)