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

该程序应该按字母顺序对我的单词列表进行排序,当我运行该程序时,它会以与我输入相同的方式打印出来。另外, count 在 SortTest 类中不起作用,我不知道为什么

4

3 回答 3

2

您没有调用该函数来对程序中的列表进行排序。在下面的代码中,您将数组中的元素添加到列表和排序列表中。

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

此后,您将继续打印 sorted,但 sorted 与列表具有相同的内容。

为了对列表进行排序,请使用列表作为参数调用气泡函数,代码可能类似于:

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); 这很好用,我在我的电脑上运行

于 2013-02-22T05:12:38.700 回答