零零壹


私信TA

用户名:Y001

访问量:292

签 名:

等  级
排  名 6949
经  验 673
参赛次数 0
文章发表 4
年  龄 0
在职情况 学生
学  校 南昌大学
专  业

  自我简介:

解题思路:
                通过对题目的分析我们不难发现,本题解题的思路有点像选择排序

        那么首先我们要将这10个数存储到数组中。找到10个数中的最大值和最小值以及这两个数的索引

        再通过交换下标值,最后输出数组
注意事项:

                这里有个陷阱(有特殊情况)

                1、当最大值在第一个,最小值在第二个时,就会发生错误

                   我们可以选择先将最大值和最后一个数交换,然后在交换最小值

                2、当最大值在第一个,最小值在最后一个这时只需交换一个就行


参考代码:

public class num_1045 {
    public static void main(String[] args) {
    
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[10];
        
        for (int i = 0; i < 10; i++) {
            arr[i] = sc.nextInt();
        }
        
        int min = arr[0], max = arr[9];
        int index1 = 0, index2 = 0, temp;//index1最大值下标,index2最小值下标
        
        for (int i = 0; i < 10; i++) {
            if (min >= arr[i]) {
                min = arr[i];
                index1 = i;
            }
            if (max <= arr[i]) {
                max = arr[i];
                index2 = i;
            }
        }
        
        temp = arr[9];//先交换最大值
        arr[9] = arr[index2];
        arr[index2] = temp;
        
        if (index1 != 9 || index2 != 0) {//当最大值在第一个,最小值在最后一个,这时只需交换一个就行
            temp = arr[0];
            arr[0] = arr[index1];
            arr[index1] = temp;
        }
        
        for (int a : arr) {
            System.out.print(a + " ");
        }
    }
}
 

0.0分

2 人评分

  评论区