首页 > 解决方案 > 链接和排序数组

问题描述

所以,我对编程很陌生(我一个月前开始学习),最近开始学习数组和排序。对于家庭作业,我得到了一个任务,要制作三个数组(姓名、居住地和金额),然后让程序打印出一个人的姓名、居住地和金额,并根据它们进行排序他们有多少钱。我希望这是有道理的。到目前为止,我只能对金额从大到小进行排序,但我不知道如何将带有数字的数组链接到其他两个数组,以便正确打印所有内容。

例如,我有:

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]);
            }
          }


    }

标签: javaarrayssorting

解决方案


我认为您的解决方案中缺少的是阵列之间的“链接”。我将解释我的解决方案。添加一个与 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]);
            }
          }




    }

推荐阅读