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类中不起作用,我不知道为什么
答案 0 :(得分:2)
您没有调用该函数来对程序中的列表进行排序。在下面的代码中,您将数组中的元素添加到列表和排序列表中。
for(int i=0; i<arr.length; i++) {
list.add(arr[i]);
sorted.add(arr[i]);
}
此后您继续打印已排序,但已排序与列表具有相同的内容。
为了对列表进行排序,请使用列表作为参数调用bubble函数,代码可以是以下内容:
Sort SortObj = new Sort();
sorted = SortObj.bubble(list);
System.out.println(sorted);
答案 1 :(得分:1)
首先要突出的是:
int count = Sort.int(sorted);
应该是:
int count = Sort.bubble(sorted);
答案 2 :(得分:-1)
使用 Sort.bubble(名单); 这工作正常,我在我的电脑上运行