首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【详解】使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组

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

原创
作者头像
大盘鸡拌面
发布2026-03-18 21:21:06
发布2026-03-18 21:21:06
330
举报

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

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

1. 问题描述

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

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

2. 实现思路

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

3. Java代码实现

代码语言:javascript
复制
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. 测试与验证

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

代码语言:javascript
复制
原始数组: [5, 3, 8, 6, 2, 7, 4]
处理后的数组: [8, 3, 5, 6, 2, 7, 2]

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

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

代码语言:javascript
复制
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程序示例,该程序实现了你的需求:输入一个数组,将数组中最大的元素与第一个元素交换,最小的元素与最后一个元素交换,然后输出处理后的数组。

代码语言:javascript
复制
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. 导入必要的包
代码语言:javascript
复制
import java.util.Arrays;

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

  1. 主方法
代码语言:javascript
复制
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. 交换方法
代码语言:javascript
复制
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,如果是则直接返回。
  • 初始化最大值和最小值的索引,以及第一个和最后一个元素的值。
  • 遍历数组找到最大值和最小值的索引。
  • 交换最大值和第一个元素,最小值和最后一个元素。
  • 处理特殊情况:如果最大值和最小值是同一个元素,则需要重新交换以确保正确性。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
    • 1. 问题描述
    • 2. 实现思路
    • 3. Java代码实现
    • 4. 代码解释
    • 5. 测试与验证
      • 代码解释:
      • 运行结果:
      • 代码解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档