数组元素换位置游戏
Posted hesc980513
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组元素换位置游戏相关的知识,希望对你有一定的参考价值。
【问题描述】输入一组数组元素,将第二大的元素和第一个元素换位置,将最小的元素和最后一个元素换位置
【输入形式】第一行输入数组长度,第二行输入数组元素(空格间隔,回车停止)
【输出形式】第一行输出:最小元素是第几个 第二大的元素是第几个
第二行输出:换位置之后的数组
【样例输入】6
4 5 6 1 3 2
【样例输出】4 2
5 4 6 2 3 1
【思路】定义两个数组data[]和data1[],其中的元素是一样的,都是刚开始键盘输入的。
对data1进行排序,然后按题目要求在data中找第二大的,也就是data1中的倒数第二个元素,如果找到,就将data中的第一个元素给刚才找到的这个位置上。
就是替换一下原有的值,然后将data1中的倒数第二个元素给了data中的第一个元素在的位置,也就是替换了data中0号位的元素。
这样就实现了数组中元素的交换(可能有些麻烦)也就是题目中的要求。
同理实现最小值跟最后一个位置上元素的交换。
还有就是要记录第二大值跟最小值的位置:这个记录要放在程序的最前面。也就是开头的那两个for循环
如果放到程序中的那两个for循环中可能会出错。
最后按要求求和输出一下。
【代码如下:】
import java.util.Scanner;
public static Scanner sc = new Scanner(System.in);
public static int n = sc.nextInt();
public static int x;
public static int z;
int[] data = new int[n];
int[] data1 = new int[n];
for (int i = 0; i < n; i++) {
data[i] = sc.nextInt();
data1[i] = data[i];
}
Arrays.sort(data1);
for (int i = 0; i < n; i++) {
if (data[i] == data1[n - 2]) {
z = i;
}
if (data[i] == data1[0]) {
x = i;
}
}
for (int i = 0; i < n; i++) {
if (data[i] == data1[n - 2]) {
data[i] = data[0];
data[0] = data1[n - 2];
break;
}
}
for (int i = 0; i < data1.length; i++) {
if (data[i] == data1[0]) {
data[i] = data[n - 1];
data[n - 1] = data1[0];
break;
}
}
System.out.print(x + 1 + " ");
System.out.println(z + 1);
for (int i = 0; i < n; i++) {
System.out.print(data[i] + " ");
}
}
}
以上是关于数组元素换位置游戏的主要内容,如果未能解决你的问题,请参考以下文章
2021-05-28:跳跃游戏 II。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可