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

给定一个整数数组 arr,我们需要完成以下操作:
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;
}
}main 方法中定义了一个示例数组 arr,并调用 swapMaxMin 方法进行处理,最后打印处理前后的数组。swapMaxMin 方法首先检查数组是否为空或长度为零,然后通过遍历数组找到最大值和最小值的索引。接着,分别交换最大值与第一个元素,最小值与最后一个元素。运行上述代码,输出结果如下:
原始数组: [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: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;
}
}希望这个示例对你有帮助!如果有任何问题或需要进一步的解释,请随时告诉我。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。