【详解】使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
【摘要】 使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组在编程中,数组操作是常见的任务之一。本文将介绍如何使用Java实现一个简单的算法:给定一个整数数组,将数组中的最大值与第一个元素交换位置,将最小值与最后一个元素交换位置,最后输出处理后的数组。1. 问题描述给定一个整数数组 arr,我们需要完成以下操作:找出数组中的最大值,并将其与数组的第一个元...
使用Java解决 - 输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
在编程中,数组操作是常见的任务之一。本文将介绍如何使用Java实现一个简单的算法:给定一个整数数组,将数组中的最大值与第一个元素交换位置,将最小值与最后一个元素交换位置,最后输出处理后的数组。
1. 问题描述
给定一个整数数组 arr,我们需要完成以下操作:
- 找出数组中的最大值,并将其与数组的第一个元素交换。
- 找出数组中的最小值,并将其与数组的最后一个元素交换。
- 输出最终的数组。
2. 实现思路
- 初始化:定义变量来存储最大值、最小值及其索引。
- 遍历数组:通过一次遍历找到最大值和最小值及其索引。
- 交换元素:根据找到的索引,交换最大值与第一个元素,最小值与最后一个元素。
- 输出结果:打印处理后的数组。
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;
}
}
}
代码解释:
- 主方法
main:
- 定义一个示例数组
array。 - 调用
swapMaxMin 方法进行交换操作。 - 使用
for 循环输出处理后的数组。
- 方法
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;
}
}
}
代码解释
- 导入必要的包:
import java.util.Arrays;
这里导入了Arrays类,用于方便地打印数组。
- 主方法:
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方法进行处理,最后打印处理前后的数组。
- 交换方法:
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)