java - 链接和排序数组
问题描述
所以,我对编程很陌生(我一个月前开始学习),最近开始学习数组和排序。对于家庭作业,我得到了一个任务,要制作三个数组(姓名、居住地和金额),然后让程序打印出一个人的姓名、居住地和金额,并根据它们进行排序他们有多少钱。我希望这是有道理的。到目前为止,我只能对金额从大到小进行排序,但我不知道如何将带有数字的数组链接到其他两个数组,以便正确打印所有内容。
例如,我有:
String[] Names = {"Person","Human","Man","Woman"};
String[] Adress = {"Hole","Street","Attic","Room"};
int[] Money = {25,0,12,13};
而不是打印出来:
Person
Hole
25
Woman
Room
13
Man
Attic
12
Human
Hole
0
它只是打印出来:
Person
Hole
25
Human
Street
13
Man
Attic
12
Woman
Room
0
我希望有人能提供帮助。我试着自己弄清楚,但我坚持住了。感谢你
这也是我到目前为止的代码:
package practice;
import java.util.Scanner;
public class Try {
public static void main(String[] args) {
String[] Names = {"Person","Human","Man","Woman"};
String[] Adress = {"Hole","Street","Attic","Room"};
int[] Money = {25,0,12,13};
int first, current, least, temp;
for(first=0;first<4;first++){
least=first;
for(current=first+1;current<4;current++){
if (Money[current]>Money[least]){
least=current;
}
temp=Money[least];
Money[least]=Money[first];
Money[first]=temp;
}
}
for (int i=0;i<4;i++){
System.out.println(Names[i]);
System.out.println(Adress[i]);
System.out.println(Money[i]);
}
}
}
解决方案
我认为您的解决方案中缺少的是阵列之间的“链接”。我将解释我的解决方案。添加一个与 Money 数组等效的新数组,并且每个元素的索引从 0 到 3。
对于元素 0,您有 Person Hole 25
对于元素 1,您有 Human Street 0 等...
Link 数组的目标是保留货币和元素之间的链接。因此,当算法对 Money 数组进行排序时,它将相应地排列索引以保留链接。
例如,Human 的钱 (0) 比 Man (12) 少,所以我们将在 0 和 12 之间置换,但为了不丢失它们的索引,我们还置换了 Link[1] 和 Link[2] 的 1 和 2,并且相当于 Human 和 Man。所以最后,当我们打印出来时,我们将打印货币数组元素并引用链接数组元素中包含的名称和地址,这些元素仍然在三个表之间进行链接。我希望你明白我在说什么,也许我说了很多。
public class Try {
public static void main(String[] args) {
String[] Names = {"Person","Human","Man","Woman"};
String[] Adress = {"Hole","Street","Attic","Room"};
int[] Money = {25,0,12,13};
int[] Link = {0,1,2,3};
int first, current, least, temp;
for(first=0;first<4;first++){
least=first;
for(current=first+1;current<4;current++){
if (Money[current]>Money[least]){
least=current;
}
temp=Money[least];
Money[least]=Money[first];
Money[first]=temp;
temp=Link[least];
Link[least]=Link[first];
Link[first]=temp;
}
}
for (int i=0;i<4;i++){
System.out.println(Names[Link[i]]);
System.out.println(Adress[Link[i]]);
System.out.println(Money[i]);
}
}
}
推荐阅读
- python - 打开目录中的所有文件以测试条件
- r - 如何使用基于成对欧几里得距离向量的核函数分配权重?
- java - 如何在 Java 中连接 1 个数组和字符串?
- java - 为什么我在此程序中收到 ArrayIndexOutOfBoundsException 错误?
- linux - Docker:从 Win10 挂载到运行 ubuntu 的容器的 dir 中不允许 git 操作
- javascript - 希望让我的机器人接收消息,并使用 Discord.js 转换字母
- python-3.x - selenium alert 使用 IE 驱动程序自动单击接受
- c - C语言程序以不同的颜色开始
- python - 如何在 Django admin 中更改对象的名称?
- python - 将 opencv bgr 列表理解为调色板的十六进制分箱。TypeError:无法解压不可迭代的 numpy.uint8 对象