0

そのうちの1つの値に基づいて、昇順の並べ替え7配列を実行し、メソッド内のループを使用して最終的な配列を出力しようとしています。配列値はユーザーが入力し、少なくとも1セットのデータが含まれますが、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

既存のコードを使用してこれを行う簡単な方法の 1 つは、 の要素を交換するときはいつでも、すべての配列の要素を交換することですsimp

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

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

.
.
.

これは最もエレガントな方法ではありません。amount, iRate, term...それを行うOOの方法は、メンバーとして持つオブジェクトを持ち、これらのオブジェクトの配列をソートすることです。

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

次に、7 つの配列に基づいてエンティティの配列を作成し、次を使用して並べ替えますArrays.sort() 。最後に、データを double の配列にコピーするか、Entity[] からコンテンツを直接出力できます。

于 2012-04-07T03:32:33.320 に答える