Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 二维数组气泡排序_Java_Sorting_Multidimensional Array_Bubble Sort - Fatal编程技术网

Java 二维数组气泡排序

Java 二维数组气泡排序,java,sorting,multidimensional-array,bubble-sort,Java,Sorting,Multidimensional Array,Bubble Sort,你好,我知道如何为一维数组实现一个简单的冒泡排序。但对于二维或多维,这就是我的问题所在 到目前为止,我一直在使用它对一维数组进行排序,效果非常好。但主要是整数,而不是字符串: boolean sort; do{ sort = true; for (int i = 0; i < testarray.length - 1; i++){ if(testarray[i] > testarray[i+1]){ temp = testa

你好,我知道如何为一维数组实现一个简单的冒泡排序。但对于二维或多维,这就是我的问题所在

到目前为止,我一直在使用它对一维数组进行排序,效果非常好。但主要是整数,而不是字符串:

boolean sort;

do{
    sort = true;

    for (int i = 0; i < testarray.length - 1; i++){
        if(testarray[i] > testarray[i+1]){
            temp = testarray[i];
            testarray[i] = testarray[i+1];
            testarray[i+1] = temp;           
            sort = false;
        }
    }

}while(!sort);

    // Descending Output
    // for (int k = testarray.length - 1; k >= 0 ; k--){

    // Ascending Output
    for (int k = 0; k < testarray.length ; k++){
        System.out.print(testarray[k] + ", ");
    }
现在,我想选择排序后的内容:客户编号、姓名、姓氏或地址。然后,我想根据我的需要,按升序或降序输出它

我只是不知道如何用冒泡排序实现这个。我想继续使用冒泡排序,没有其他排序算法,我想了解冒泡排序在这种情况下是如何工作的

对于上升和下降,我的想法是:我可以做一个if循环。例如
如果(asc==1),则输出升序,否则输出降序。例如,asc将通过控制台被询问


非常感谢您的帮助。

您可以保留相同的排序算法。它仍然不知道2D数组。你必须想出一个比较函数,它接受两个一维数组,并指出哪个数组更大。

二维数组基本上只是由数组组成的一维数组

只需使用与现有代码相同的代码,只需移动内部数组而不是int

要知道一个数组是否比下一个数组“大”,请比较正确数组成员的字符串值(例如名称或姓氏…)。为此,可以使用stringcompareto方法

最后注意:如果内部数组实际上是一个包含信息的对象,那么您给出的示例会更好。通过这种方式,您可以为所有字段设置单独的数据类型,而不是将所有字段设置为字符串

e、 g:

编辑:要实际回答您的问题:

按以下方式更改您的程序:

更改临时声明:

 String [] temp;
并更改行:

 if(testarray[i] > testarray[i+1])
进入:

这样就可以根据名字排序了


R

在二维数组中,包含对象的类型从
int
Integer
更改为
String[]
(注意:这是一个字符串数组)。这就是您需要将
temp
的类型更改为的内容

最大的变化将是你的比较。你不能仅仅用
比较两个字符串数组,我猜你想要把“123”、“john”、“doe”和“某处”组合在一起

我建议你用一个物体,比如说

public object Person {
    private int id;
    private String name;
    private String surname;
    private String address;
}
添加常用的getter和setter

您可以拥有一个普通的Person对象数组,使用气泡排序算法对其进行排序。您可以创建几个自定义比较器,将id、姓名、姓氏或地址与冒泡排序算法进行比较

排序方法的签名应该是

public Person[] bubbleSort(Person[] persons, Comparator comp)

我将不得不说:永远不要使用泡泡糖!它看起来不像是要对2D数组进行排序,而是要对元素为数组的数组进行排序。区别在于内部数组对sort函数没有任何特殊的意义;它们只是要排序的数组元素……取而代之的是查找Shell排序,只是稍微复杂一点,而不是O(n^2)的大小写复杂性(它的O(nlog^2(n))米奇:如果你这样做的话,你可能根本不应该自己排序,而应该只依靠容器类和排序函数。然而,我几乎不认为这是问题的关键。Bubblesort是一个很好的排序算法,它很容易理解,也不难实现。非常适合自学基本的米奇:它在t有人试图用他们的第一个排序算法弄湿他们的脚。不是每个人在第一次尝试时都会从他们的*ss中提取递归排序。嗯?我怎么能保留它?当我有3个客户,我希望他们在名称后升序排序:客户[0][2]=xerxes,客户[1][2]=abrahams,客户[2][2]=库斯福克。因此它将被分类为:亚伯拉罕[1][2],库斯福克[2][2]和薛西斯[0][2]。
 if(testarray[i][1] > testarray[i+1][1])
public object Person {
    private int id;
    private String name;
    private String surname;
    private String address;
}
public Person[] bubbleSort(Person[] persons, Comparator comp)