我的作业要求我将输入的数据存储在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]);
}
这样它就可以容纳一个如下所示的2D数组:
//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
}
就是这样。任何帮助都会很棒!我真的需要尽快完成这个。提前致谢。 :)
答案 0 :(得分:0)
取决于你正在分类的东西。如果您想根据名称对罪犯进行排序,那么每次在选择排序算法中使用criminal[X]
之类的内容时,请将其替换为criminal[X][0]
。同样,如果您想根据定罪年份进行排序,请将criminal[X]
替换为criminal[X][2]
等。
请注意,如果您对字符串进行排序不使用<
,请改用compareTo()
方法。
答案 1 :(得分:0)
您正在对名称进行排序,并且它们碰巧有两个与之关联的其他字段。当你的排序通过交换索引来移动东西时,它应该交换犯罪分子[] []中的条目(行)的适当索引。
答案 2 :(得分:0)
Arrays.sort(criminal, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareTo(o2[0]);
}
});