排序数组:冒泡排序

时间:2015-12-02 01:44:56

标签: java arrays sorting

public static void sortByNumber(Course[] list) {
    Course temp = new Course();

    boolean fixed = false;

    while(fixed == false) {
        fixed = true;
    for (int i = 0; i<list.length-1; i++) {

        if (list[i].getNum() > list[i+1].getNum()) {
            temp.setNum(list[i].getNum());
            temp.setDept(list[i].getDept());
            temp.setTitle(list[i].getTitle());

            list[i] = list[i+1];
            list[i+1] = temp;
            fixed = false;
        }
    }
    }}

这是一种排序大学课程的方法。

例如,每个课程都有其部门(即MATH),编号(即263)和标题(即工程师的常微分方程) - MATH 263工程师常用微分方程。

在我的另一个课程中,我创建了一个对象Course,它有自己的访问器和mutator(即getNum(),setNum(),getDept()等等。)

鉴于一长串课程,我想根据他们的课程编号安排,但上述方法似乎不起作用。

有人暗示这个原因吗?

2 个答案:

答案 0 :(得分:3)

temp变量是对Course对象的引用。

实际上,数组list是对Course个对象的引用数组。

您只需要更改引用,而不是将对象的值复制到temp。只需要temp = list[i];来保持对数组第i个元素的引用。

答案 1 :(得分:0)

我宁愿实现Comparable界面。

class Course implements Comparable<Course>{
    @Override
    public int compareTo(Course other){
        return this.getNum().compareTo(other.gerNum());
    }
}

然后您可以使用Array.sort(Course[] list)对课程数组进行排序。