我的作业要求我将输入的数据存储在2D数组中,并使用选择排序按字母顺序对犯罪进行排序。如何更改以下选择排序:
//selection sort
for(i = 0; i < criminal.length; i++){
smallest = i;
for(j = i; j < criminal.length; j++){
//compare smallest to current position
if(criminal[j] < criminal[smallest]){
smallest = j;
}
//swap smallest with position in the array
temp = criminal[i];
criminal[i] = criminal[smallest];
age[smallest] = temp;
}
}
//output
for(i = 0; i < criminal.length; i++){
System.out.println(criminal[i]);
}
这样就可以容纳一个二维数组,如下所示:
//loop to request to fill array
for (i = 0; i < criminals.length ; i++) {
System.out.print("Enter first and last name of criminal: ");
criminals[i][0] = br.readLine(); //Criminal Name
System.out.print("Enter crime committed: ");
criminals[i][1] = br.readLine(); //Criminal Crime
System.out.print("Enter year of conviction: ");
criminals[i][2] = br.readLine(); //Year of conviction
}
而已。任何帮助将是巨大的!我真的需要尽快完成此工作。提前致谢。 :)
最佳答案
取决于您要排序的内容。如果要基于罪犯的姓名对罪犯进行排序,则每次在选择排序算法中使用类似criminal[X]
的内容时,都将其替换为criminal[X][0]
。同样,如果您要基于定罪年份进行排序,请用criminal[X]
等替换criminal[X][2]
。
请注意,如果您要对字符串进行排序,请不要使用<
,而应使用compareTo()
方法。