我的作业要求我将输入的数据存储在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()方法。

10-07 20:43