0

我希望根据其中一个数组的值对 7 个数组进行升序排序,然后使用方法内部的循环打印最终数组。数组值由用户输入,将包含至少一组数据,但不超过 5 组。

到目前为止,我的代码如下,它是我被要求使用的选择排序的基本结构,我希望对数组 simp 进行升序排序(代表简单的兴趣),但我不知道如何获得与它一起移动的所有其他数组都保留这些值。

关于用于此的循环方法的任何想法?

public static void sort(double[] amount, double[] iRate, int[] term, double[] simp, double[] month, double[] daily, double[] weekly)
  {

      for (int i=0;i<simp.length-1;i++)
      {
            int minindex=i;
            for (int j=i+1;j<simp.length;j++)
            {
                if(simp[minindex]>simp[j])
                    minindex=j;
            }
            double temp = simp[minindex];
            simp[minindex]=simp[i];
            simp[i]= temp;
      }

}

示例运行

[Line #]    [Principal Amount]  Interest rate   term    simple  monthly     weekly    daily
1            $1,375.00                1.18%         7    9.4244   9.4522      9.4557    9.4567
2             $100.00                 3.25%         6     1.625    1.636      1.6377    1.6382
3             $100.00                 3.25%         12     3.25   3.2988      3.3023    3.3032

[Line #]    [Principal Amount]  Interest rate   term    simple   monthly    weekly    daily
1             $100.00                 3.25%        6       1.62    1.636     1.6377    1.6382
2             $100.00                 3.25%       12       3.25    3.2988    3.3023    3.3032
3           $1,375.00                 1.18%        7      9.4244   9.4522    9.4557    9.4567
4

2 回答 2

1

使用现有代码执行此操作的一种直接方法是在交换元素时交换所有数组中的元素simp

double temp = simp[minindex];
simp[minindex]=simp[i];
simp[i]= temp;

temp = iRate[minindex];
iRate[minindex]=iRate[i];
iRate[i]= temp;

.
.
.

这不是最优雅的方式。执行此操作的 OO 方法是拥有一个具有amount, iRate, term...成员的对象并对这些对象的数组进行排序。

于 2012-04-07T03:33:32.120 回答
0

您可以创建一个包含所有字段的类:

 class Entity implements Comparable<Entity> {
      double simp;
      double amount;
      double rate;
      ...
      // construct each instance taking the next line from 
      // the arrays or doubles

      // implement compareTo
      public int compareTo(Entity entity) {
         // compare only the field you need
         return Double.compare(simp, entity.simp); 
      }
   }

然后根据您的七个数组构建一个实体数组并使用它进行排序Arrays.sort() 最后您可以将数据复制回双精度数组,或者直接从 Entity[] 打印内容。

于 2012-04-07T03:32:33.320 回答