1
import java.lang.Object;
import java.util.List;
 class Sort{
  public static int bubble(List<String> sorted) {
    int count=0; int i=sorted.size();
    boolean changed = true;
    while(changed && i>0) {
      changed = false;
      for(int j=1; j<i; j++) {
        if(sorted.get(j).toUpperCase().compareTo(sorted.get(j-1).toUpperCase())<0) {
          String s=sorted.get(j);
          sorted.set(j,sorted.get(j-1));
          sorted.set(j-1, s);
          changed = true;
        }   
      }
      count++;
      i--;
    }
    return count;
  }
}


import java.util.ArrayList;
class SortTest {
  public static void main(String[] args) {
    ArrayList<String> sorted, list;
    list = new ArrayList<String>();
    sorted = new ArrayList<String>();
    String[] arr= {"Cat", "Dog", "Hat", "Apple", "Zipper"};

    for(int i=0; i<arr.length; i++) {
      list.add(arr[i]);
      sorted.add(arr[i]);
    }
    System.out.println(list);
    System.out.println();
    int count = Sort.int(sorted);
    System.out.println("Sorted in "+count+" passes");
    System.out.println(sorted);
  }
}

このプログラムは、単語のリストをアルファベット順に並べ替えるはずで、プログラムを実行すると、入力したのと同じように出力されます。また、SortTest クラスで count が機能せず、その理由がわかりません

4

3 に答える 3

2

プログラムでリストをソートする関数を呼び出していません。以下のコードでは、配列内の要素をリストとソート済みリストの両方に追加しています。

for(int i=0; i<arr.length; i++) {
      list.add(arr[i]);
      sorted.add(arr[i]);
}

その後、先に進んで並べ替えて印刷しますが、並べ替えられた内容はリストと同じです。

リストを並べ替えるには、リストをパラメーターとしてバブル関数を呼び出します。コードは次のようになります。

Sort SortObj = new Sort(); 
sorted = SortObj.bubble(list);
System.out.println(sorted);
于 2013-02-22T05:01:19.460 に答える
1

最初に目立つのは次のとおりです。

int count = Sort.int(sorted);

おそらく次のようになります。

int count = Sort.bubble(sorted);
于 2013-02-22T05:03:09.307 に答える
-1

Sort.bubble(list); を使用します。これは正常に動作し、PCで実行します

于 2013-02-22T05:12:38.700 に答える