0

現在、Double Array を手動で昇順に並べ替えようとしています。私が抱えている問題は、出力の一番上に 1 番目に小さい値のみが表示され (これは正しい)、残りの値は 0.0 として表示されることです。(値の範囲は -5 から +20 です)。以下は、ソートでの私のコーディングの試みです。どんな助けでも大歓迎です。ありがとうございました。

             int index; 
             double temp;

             for(index = 0; index < x.length; index++)
               { 
                 for(int j = 0; j < x.length - 1; j++)
                    {
                       if(x[j + 1] < x[j])
                          {
                             temp = x[j + 1];
                             x[j + 1] = x[j];
                             x[j] = temp;  
                           }
                      }
                }
4

3 に答える 3

1

近いですが、x[index] と x[j] を比較する必要があります。

for (int index = 0; index < x.length - 1; index++) {
  for (int j = index + 1; j < x.length; j++) {
    if (x[j] < x[index]) {
      temp = x[j];
      x[j] = x[index];
      x[index] = temp;
    }
  }
}
于 2013-07-15T18:22:05.170 に答える
1

それはあなたがそこに着いたほとんどバブルソートです。これを試して :

 public static void sort(int[] x) {
  boolean sorted=true;
  int temp;

  while (sorted){
     sorted = false;
     for (int i=0; i < x.length-1; i++) 
        if (x[i] > x[i+1]) {                      
           temp       = x[i];
           x[i]       = x[i+1];
           x[i+1]     = temp;
           sorted = true;
        }          
  } 

}

しかしコリンは正しい。Arrays.sort を使用したほうがよいでしょう。

于 2013-07-15T18:09:36.780 に答える
1

パッケージから使用Arrays.sort(x)してjava.util、配列をソートできます。

于 2013-07-15T18:11:15.333 に答える