在java中使用BUBBLE SORT对二维字符串数组进行排序

2024-05-18

类似的问题已经被问过,但从来没有关于二维字符串数组,因此在尝试了很长时间之后我找不到我想要的。我正在尝试使用 BubbleSort 对 java 中的 2D 字符串数组进行排序。

作为输入,我收到一个二维字符串数组(一个表)以及您应该排序的“列”的索引。我应该按指定列中的值对行进行排序。

您可以将第一个索引视为行索引,第二个索引视为列索引。例如,下面的Java数组和表相互对应:

String[][] table = {
  {"a", "b"},
  {"c", "d"}
};

-

0   1
  +---+---+
0 | a | b |
  +---+---+
1 | c | d |
  +---+---+

继续这个例子,table[0][1]将产生值“b”,因为它是第0行第1列中的项目。

重要提示:我不允许使用 Java 库中的任何排序算法,例如 Arrays.sort。

这是我到目前为止所尝试过的:

class Solution {
        public static void stableSort(String[][] table, int column) {
            int i;
            int j;
            String temp = null;
            for (i = 0; i < table.length - 1; i++) {
                for (j = 0; j < table.length - 1 - i; j++) {
                    if (table[i][j].compareTo(table[i][j + 1]) > 0) {
                        temp = table[i][j];
                        table[i][j] = table[i][j + 1];
                        table[i][j + 1] = temp;
                    }
                }
            }
        }
    }

我收到索引越界错误,并且它不起作用,因为测试期望表 [0][0] 中出现不同的结果 感谢您的帮助。


public static String[][] stableSort(String[][] table, int column) {
    int i=0,j=0;
    String[] temp = null;
    boolean swap=true;
    while(swap)
    for (i = 0; i < table.length - 1; i++) {
        swap=false;
        if(table[i][column].compareTo(table[i+1][column]) > 0){
            temp = table[i];
            table[i] = table[i+1];
            table[i+1]=temp;
            swap=true;
        }
    }
    return table;
}

它继续应用冒泡排序,直到不再执行交换。此时,条件 while(swap) 不再满足,该方法返回。 主要尝试过,它有效(如果我明白你的意思):

public static void main(String[] args) {
    String[][] table = {
            {"z", "b", "v"},
            {"s", "w", "a"},
            {"r", "c", "h"}
    };

    table = stableSort(table,1);
    for(int i = 0; i < table.length; i++){
        for(int j = 0; j < table[0].length; j++){
            System.out.printf("%5s ", table[i][j]);
        }
        System.out.println();
    }
}

这输出:

z     b     v 
r     c     h 
s     w     a 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在java中使用BUBBLE SORT对二维字符串数组进行排序 的相关文章

随机推荐