按字母顺序选择2D阵列

时间:2013-09-19 02:40:36

标签: java arrays sorting

我的作业要求我将输入的数据存储在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
    }

就是这样。任何帮助都会很棒!我真的需要尽快完成这个。提前致谢。 :)

3 个答案:

答案 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]);
   }        
});