如何使用结构进行冒泡排序
How to bubble sort with structs
我尝试通过冒泡排序方法对 struct/class 进行排序,我想在其中保存
我这样定义 struct/class:
public static class Student {
String name;
double grade;
}
在我将所有数据插入结构或 class 后,我想通过冒泡法对整个数组进行排序,如下所示:
public static void ordenar_burbuja(Student array[]) {
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length-1; j++) {
if(array[j].grade>array[j+1].grade) {
Student aux = array[j];
array[j] = array[j+1];
array[j+1] = array[j];
}
}
}
}
我的想法是将它从最高等级排序到最低等级,我在其中创建了这个 aux 变量。我需要更改学生姓名和学生年级位置。但是我在定义 aux 变量类型时遇到了问题。我应该更改冒泡排序中的 .name 和 .age,还是这样?
在 if 块的最后一个语句中,将其更改为:
array[j+1] = aux
在第二个语句中,您将数组[j] 分配给数组[j+1]。
然后你将 array[j+1] 分配给 array[j],它现在持有对 aux 引用的对象的引用。
因此,您只是将 array[j+1] 和 array[j] 都设置为 aux(最初位于 array[j] 的 Student),这不是您想要做的。
我尝试通过冒泡排序方法对 struct/class 进行排序,我想在其中保存
我这样定义 struct/class:
public static class Student {
String name;
double grade;
}
在我将所有数据插入结构或 class 后,我想通过冒泡法对整个数组进行排序,如下所示:
public static void ordenar_burbuja(Student array[]) {
for (int i = 1; i < array.length; i++) {
for (int j = 0; j < array.length-1; j++) {
if(array[j].grade>array[j+1].grade) {
Student aux = array[j];
array[j] = array[j+1];
array[j+1] = array[j];
}
}
}
}
我的想法是将它从最高等级排序到最低等级,我在其中创建了这个 aux 变量。我需要更改学生姓名和学生年级位置。但是我在定义 aux 变量类型时遇到了问题。我应该更改冒泡排序中的 .name 和 .age,还是这样?
在 if 块的最后一个语句中,将其更改为:
array[j+1] = aux
在第二个语句中,您将数组[j] 分配给数组[j+1]。 然后你将 array[j+1] 分配给 array[j],它现在持有对 aux 引用的对象的引用。 因此,您只是将 array[j+1] 和 array[j] 都设置为 aux(最初位于 array[j] 的 Student),这不是您想要做的。