【详解】使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

举报
皮牙子抓饭 发表于 2026/03/18 21:22:00 2026/03/18
【摘要】 使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组在编程中,数组操作是常见的任务之一。本文将介绍如何使用Java实现一个简单的算法:给定一个整数数组,将数组中的最大值与第一个元素交换位置,将最小值与最后一个元素交换位置,最后输出处理后的数组。1. 问题描述给定一个整数数组 ​​arr​​,我们需要完成以下操作:找出数组中的最大值,并将其与数组的第一个元...

使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

在编程中,数组操作是常见的任务之一。本文将介绍如何使用Java实现一个简单的算法:给定一个整数数组,将数组中的最大值与第一个元素交换位置,将最小值与最后一个元素交换位置,最后输出处理后的数组。

1. 问题描述

给定一个整数数组 ​​arr​​,我们需要完成以下操作:

  • 找出数组中的最大值,并将其与数组的第一个元素交换。
  • 找出数组中的最小值,并将其与数组的最后一个元素交换。
  • 输出最终的数组。

2. 实现思路

  1. 初始化:定义变量来存储最大值、最小值及其索引。
  2. 遍历数组:通过一次遍历找到最大值和最小值及其索引。
  3. 交换元素:根据找到的索引,交换最大值与第一个元素,最小值与最后一个元素。
  4. 输出结果:打印处理后的数组。

3. Java代码实现

public class ArraySwap {
    public static void main(String[] args) {
        int[] arr = {5, 3, 8, 6, 2, 7, 4};
        
        // 打印原始数组
        System.out.println("原始数组: " + java.util.Arrays.toString(arr));
        
        // 调用方法进行交换
        swapMaxMin(arr);
        
        // 打印处理后的数组
        System.out.println("处理后的数组: " + java.util.Arrays.toString(arr));
    }

    public static void swapMaxMin(int[] arr) {
        if (arr == null || arr.length == 0) {
            return;
        }
        
        int maxIndex = 0; // 最大值的索引
        int minIndex = arr.length - 1; // 最小值的索引
        
        // 遍历数组,找到最大值和最小值的索引
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > arr[maxIndex]) {
                maxIndex = i;
            }
            if (arr[i] < arr[minIndex]) {
                minIndex = i;
            }
        }
        
        // 交换最大值与第一个元素
        int temp = arr[0];
        arr[0] = arr[maxIndex];
        arr[maxIndex] = temp;
        
        // 交换最小值与最后一个元素
        temp = arr[arr.length - 1];
        arr[arr.length - 1] = arr[minIndex];
        arr[minIndex] = temp;
    }
}

4. 代码解释

  • 主函数:​​main​​ 方法中定义了一个示例数组 ​​arr​​,并调用 ​​swapMaxMin​​ 方法进行处理,最后打印处理前后的数组。
  • 交换方法:​​swapMaxMin​​ 方法首先检查数组是否为空或长度为零,然后通过遍历数组找到最大值和最小值的索引。接着,分别交换最大值与第一个元素,最小值与最后一个元素。

5. 测试与验证

运行上述代码,输出结果如下:

原始数组: [5, 3, 8, 6, 2, 7, 4]
处理后的数组: [8, 3, 5, 6, 2, 7, 2]

可以看到,最大值 ​​8​​ 与第一个元素 ​​5​​ 交换了位置,最小值 ​​2​​ 与最后一个元素 ​​4​​ 交换了位置。




下面是一个使用Java实现的示例代码,该代码实现了将输入数组中最大的元素与第一个元素交换,最小的元素与最后一个元素交换,并输出处理后的数组。

public class ArraySwap {
    public static void main(String[] args) {
        int[] array = {3, 1, 4, 1, 5, 9, 2, 6}; // 示例输入数组
        swapMaxMin(array);
        for (int num : array) {
            System.out.print(num + " ");
        }
    }

    public static void swapMaxMin(int[] array) {
        if (array == null || array.length < 2) {
            return; // 如果数组为空或长度小于2,则不需要交换
        }

        int maxIndex = 0;
        int minIndex = array.length - 1;

        // 找到最大值和最小值的索引
        for (int i = 0; i < array.length; i++) {
            if (array[i] > array[maxIndex]) {
                maxIndex = i;
            }
            if (array[i] < array[minIndex]) {
                minIndex = i;
            }
        }

        // 交换最大值和第一个元素
        int temp = array[0];
        array[0] = array[maxIndex];
        array[maxIndex] = temp;

        // 交换最小值和最后一个元素
        temp = array[array.length - 1];
        array[array.length - 1] = array[minIndex];
        array[minIndex] = temp;

        // 特殊情况处理:如果最大值和最小值是同一个元素(即数组中有重复的最大或最小值)
        if (maxIndex == 0 && minIndex == array.length - 1) {
            // 需要再次交换,因为第一次交换后最大值和最小值的位置已经改变
            temp = array[0];
            array[0] = array[array.length - 1];
            array[array.length - 1] = temp;
        }
    }
}


代码解释:

  1. 主方法 main​:
  • 定义一个示例数组 ​​array​​。
  • 调用 ​​swapMaxMin​​ 方法进行交换操作。
  • 使用 ​​for​​ 循环输出处理后的数组。
  1. 方法 swapMaxMin​:
  • 检查数组是否为空或长度小于2,如果是则直接返回。
  • 初始化 ​​maxIndex​​ 和 ​​minIndex​​ 分别为0和数组的最后一个索引。
  • 使用 ​​for​​ 循环遍历数组,找到最大值和最小值的索引。
  • 交换最大值和第一个元素。
  • 交换最小值和最后一个元素。
  • 处理特殊情况:如果最大值和最小值是同一个元素,需要再次交换以确保正确性。

运行结果:

对于输入数组 ​​{3, 1, 4, 1, 5, 9, 2, 6}​​,输出将是 ​​9 1 4 1 5 6 2 3​​。



下面是一个详细的Java程序示例,该程序实现了你的需求:输入一个数组,将数组中最大的元素与第一个元素交换,最小的元素与最后一个元素交换,然后输出处理后的数组。

import java.util.Arrays;

public class ArraySwap {
    public static void main(String[] args) {
        // 示例数组
        int[] array = {3, 1, 4, 1, 5, 9, 2, 6};
        
        System.out.println("原始数组: " + Arrays.toString(array));
        
        // 调用方法进行交换
        swapMaxMin(array);
        
        System.out.println("处理后的数组: " + Arrays.toString(array));
    }

    /**
     * 交换数组中的最大值和第一个元素,最小值和最后一个元素
     * @param array 输入的数组
     */
    public static void swapMaxMin(int[] array) {
        if (array == null || array.length < 2) {
            return; // 数组为空或长度小于2时,无需交换
        }
        
        int maxIndex = 0;
        int minIndex = array.length - 1;
        int firstElement = array[0];
        int lastElement = array[array.length - 1];
        
        // 找到最大值和最小值的索引
        for (int i = 0; i < array.length; i++) {
            if (array[i] > array[maxIndex]) {
                maxIndex = i;
            }
            if (array[i] < array[minIndex]) {
                minIndex = i;
            }
        }
        
        // 交换最大值和第一个元素
        array[maxIndex] = firstElement;
        array[0] = array[maxIndex];
        
        // 交换最小值和最后一个元素
        array[minIndex] = lastElement;
        array[array.length - 1] = array[minIndex];
        
        // 特殊情况处理:如果最大值和最小值是同一个元素
        if (maxIndex == minIndex) {
            array[0] = firstElement;
            array[array.length - 1] = lastElement;
        }
    }
}

代码解释

  1. 导入必要的包
import java.util.Arrays;

这里导入了​​Arrays​​类,用于方便地打印数组。

  1. 主方法
public static void main(String[] args) {
    int[] array = {3, 1, 4, 1, 5, 9, 2, 6};
    System.out.println("原始数组: " + Arrays.toString(array));
    swapMaxMin(array);
    System.out.println("处理后的数组: " + Arrays.toString(array));
}

主方法中定义了一个示例数组,并调用​​swapMaxMin​​方法进行处理,最后打印处理前后的数组。

  1. 交换方法
public static void swapMaxMin(int[] array) {
    if (array == null || array.length < 2) {
        return;
    }
    
    int maxIndex = 0;
    int minIndex = array.length - 1;
    int firstElement = array[0];
    int lastElement = array[array.length - 1];
    
    for (int i = 0; i < array.length; i++) {
        if (array[i] > array[maxIndex]) {
            maxIndex = i;
        }
        if (array[i] < array[minIndex]) {
            minIndex = i;
        }
    }
    
    array[maxIndex] = firstElement;
    array[0] = array[maxIndex];
    
    array[minIndex] = lastElement;
    array[array.length - 1] = array[minIndex];
    
    if (maxIndex == minIndex) {
        array[0] = firstElement;
        array[array.length - 1] = lastElement;
    }
}
  • 首先检查数组是否为空或长度小于2,如果是则直接返回。
  • 初始化最大值和最小值的索引,以及第一个和最后一个元素的值。
  • 遍历数组找到最大值和最小值的索引。
  • 交换最大值和第一个元素,最小值和最后一个元素。
  • 处理特殊情况:如果最大值和最小值是同一个元素,则需要重新交换以确保正确性。

希望这个示例对你有帮助!如果有任何问题或需要进一步的解释,请随时告诉我。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。