使用冒泡排序对列表进行排序

时间:2013-02-22 04:48:57

标签: java class variables

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类中不起作用,我不知道为什么

3 个答案:

答案 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(名单); 这工作正常,我在我的电脑上运行