Java 排序数组:气泡排序 publicstaticvoidsortbynumber(课程[]列表){ 课程温度=新课程(); 布尔固定=假; while(fixed==false){ 固定=正确; 对于(int i=0;i list[i+1].getNum()){ temp.setNum(list[i].getNum()); temp.setDept(列表[i].getDept()); temp.setTitle(list[i].getTitle()); 列表[i]=列表[i+1]; 列表[i+1]=临时; 固定=假; } } }}
这是一种对大学提供的课程进行排序的方法 例如,每门课程都有自己的系(即数学)、编号(即263)和名称(即工程师的常微分方程)——数学263工程师的常微分方程 在我的另一个类中,我创建了一个对象过程,它有自己的访问器和变异器(即getNum()、setNum()、getDept()等等) 考虑到一长串的课程,我想根据课程编号来安排,但上面的方法似乎不起作用Java 排序数组:气泡排序 publicstaticvoidsortbynumber(课程[]列表){ 课程温度=新课程(); 布尔固定=假; while(fixed==false){ 固定=正确; 对于(int i=0;i list[i+1].getNum()){ temp.setNum(list[i].getNum()); temp.setDept(列表[i].getDept()); temp.setTitle(list[i].getTitle()); 列表[i]=列表[i+1]; 列表[i+1]=临时; 固定=假; } } }},java,arrays,sorting,Java,Arrays,Sorting,这是一种对大学提供的课程进行排序的方法 例如,每门课程都有自己的系(即数学)、编号(即263)和名称(即工程师的常微分方程)——数学263工程师的常微分方程 在我的另一个类中,我创建了一个对象过程,它有自己的访问器和变异器(即getNum()、setNum()、getDept()等等) 考虑到一长串的课程,我想根据课程编号来安排,但上面的方法似乎不起作用 有人能暗示一下原因吗 变量temp是对课程对象的引用 实际上,数组列表是对课程对象的引用数组 您只需要更改引用,而不需要将对象的值复制到tem
有人能暗示一下原因吗 变量
temp
是对课程
对象的引用
实际上,数组列表
是对课程
对象的引用数组
您只需要更改引用,而不需要将对象的值复制到
temp
。只要做temp=list[i]
保留对数组第i个元素的引用。变量temp
是对课程
对象的引用
实际上,数组列表
是对课程
对象的引用数组
您只需要更改引用,而不需要将对象的值复制到
temp
。只要做temp=list[i]
保留对数组第i个元素的引用。我更愿意实现Comparable
接口
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;
}
}
}}
课程实施可比性{
@凌驾
公共国际比较(课程其他){
返回这个.getNum().compareTo(other.gerNum());
}
}
然后您可以使用
Array.sort(Course[]list)
对课程数组进行排序。我更愿意实现Comparable
界面
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;
}
}
}}
课程实施可比性{
@凌驾
公共国际比较(课程其他){
返回这个.getNum().compareTo(other.gerNum());
}
}
然后您可以使用
Array.sort(Course[]list)
对课程数组进行排序。至少对大多数课程进行排序,{100101102…201202,}提示:请查看设置器。您没有考虑面向对象编程。在你称之为设定器之前,temp是什么?接下来是什么?至少对大多数人安排,{100101102…201202,}提示:看看你的二传手。您没有考虑面向对象编程。在你称之为设定器之前,temp是什么?之后是什么?我看到我的冗余效率很低,但为什么它会产生错误的结果?您将第I个引用指向下一个对象(第I+1个,没关系),但是要确保i+1次引用始终指向temp对象,而不是指向第i次对象。您可以在循环中初始化temp
,这将是正确的,但这将是冗余和低效的。将你的温度指向i+1是最好的解决方案。查看RosettaCode上的气泡排序算法和其他一些排序方法,以了解它们。我发现我的冗余效率很低,但为什么它会产生错误的结果呢?您将第I个引用指向下一个对象(第I+1个,没关系),但是要确保i+1次引用始终指向temp对象,而不是指向第i次对象。您可以在循环中初始化temp
,这将是正确的,但这将是冗余和低效的。将你的温度指向i+1是最好的解决方案。查看RosettaCode上的气泡排序算法和其他一些排序方法,以了解它们。