Java 使用选择排序对对象数组进行排序?
这是一个家庭作业问题,所以我不想让别人帮我做。尽管如此,我遇到了一个问题。我了解选择排序,并且可以编写一个代码来完成这项工作,但我不知道如何访问需要排序的对象的特定部分。在这种情况下,它是学生ID号 我得到了一个部分程序,一个学生类(根据我们得到的另一个文件中的值创建学生)Java 使用选择排序对对象数组进行排序?,java,arrays,sorting,object,Java,Arrays,Sorting,Object,这是一个家庭作业问题,所以我不想让别人帮我做。尽管如此,我遇到了一个问题。我了解选择排序,并且可以编写一个代码来完成这项工作,但我不知道如何访问需要排序的对象的特定部分。在这种情况下,它是学生ID号 我得到了一个部分程序,一个学生类(根据我们得到的另一个文件中的值创建学生) importtextio.*; 公营班学生{ 静态void sortByID(int[]A){ 对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){ int maxLoc
importtextio.*;
公营班学生{
静态void sortByID(int[]A){
对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){
int maxLoc=0;
对于(int j=1;j A[maxLoc]){
maxLoc=j;
}
}
int temp=A[maxLoc];
A[maxLoc]=A[lastPlace];
A[最后地点]=临时;
}
}
公共静态void main(字符串参数[]){
学生Q[]学生;
内螺纹螺柱;
字符串名;
int-id;
双平均值;
TextIO.readUserSelectedFile();
NBR=TextIO.getlnInt();
学生=新学生Q[NBR];
对于(int i=0;i为什么不将方法签名从静态void sortByID(int[]A)
更改为静态void sortByID(StudentQ[]students)
更改方法签名后,可以执行以下操作进行比较:
if(students[j].id>students[maxLoc].id)
sortById方法应该采用StudentQ数组而不是int数组。整数没有可以用作排序参数的id。StudentQ[].id将不起作用,因为字段id位于StudentQ上。以下是使其起作用所需的重构片段:
static void sortByID(StudentQ[] A) {
for (int lastPlace = A.length-1; lastPlace > 0; lastPlace--) {
int maxLoc = 0;
for (int j = 1; j <= lastPlace; j++) {
if (A[j].id > A[maxLoc].id) {
maxLoc = j;
}
}
StudentQ temp = A[maxLoc];
A[maxLoc] = A[lastPlace];
A[lastPlace] = temp;
}
static void sortByID(StudentQ[]A){
对于(int lastPlace=A.length-1;lastPlace>0;lastPlace--){
int maxLoc=0;
对于(int j=1;j A[maxLoc].id){
maxLoc=j;
}
}
学生Q温度=A[maxLoc];
A[maxLoc]=A[lastPlace];
A[最后地点]=临时;
}
<>如果你有兴趣探索一种更具java风格的方法,考虑使用比较器。谢谢。由于某种原因,我在尝试学生Q.I..期末考试显然是把我的大脑转向了MUH。我想,但是我们在课堂上没有使用比较器,所以我很可能是对接标记。谢谢你的回答。
static void sortByID(StudentQ[] A) {
for (int lastPlace = A.length-1; lastPlace > 0; lastPlace--) {
int maxLoc = 0;
for (int j = 1; j <= lastPlace; j++) {
if (A[j].id > A[maxLoc].id) {
maxLoc = j;
}
}
StudentQ temp = A[maxLoc];
A[maxLoc] = A[lastPlace];
A[lastPlace] = temp;
}