Java快速排序二维数组

Java快速排序二维数组,java,sorting,multidimensional-array,Java,Sorting,Multidimensional Array,我有一个由如下值组成的2D字符串数组 { "Home","0.1256784" "Contact","-0.56789" "Refer","1.36589" "Next","3.678456" } 我必须根据第二个元素(双值)对数组进行排序,并获得如下结果 {"Contact","-0.56789" "Home","0.1256784" "Refer","1.36589" "Next","3.678456" } 我使用了一些冒泡排序代码对其进行排序,但

我有一个由如下值组成的2D字符串数组

{ "Home","0.1256784"  
 "Contact","-0.56789"  
 "Refer","1.36589"  
 "Next","3.678456" }
我必须根据第二个元素(双值)对数组进行排序,并获得如下结果

{"Contact","-0.56789"  
 "Home","0.1256784"  
 "Refer","1.36589"  
 "Next","3.678456" }  
我使用了一些冒泡排序代码对其进行排序,但我必须知道如何使排序比我的排序更高效、更快。我尝试了一些以前发布的与我的问题相关的代码,但我无法完成任务。
我的代码:

String tt="",tk="";
for(int i=1;i<myarray.length;i++)
 {  
for(int j=1;j<myarray.length-1;j++)
       {
       if(Double.parseDouble(myarray[i][1])<Double.parseDouble(myarray[j][1]))
            {
                    tk=myarray[i][1];  
                    tt=myarray[i][0];  
                    myarray[i][1]=myarray[j][1];  
                    myarray[i][0]=myarray[j][0];  
                    myarray[j][1]=myarray;  
                    myarray[j][0]=myarray;  


            }
          }
        }
String tt=“”,tk=“”;

对于(int i=1;i如果它是2d数组,您可以使用
array.sort(String[],Comparator Comparator)
并传递一个自定义比较器,该比较器比较子数组的第二个元素。

您可以使用
Arrays.sortsort(Object[]a,Comparator c)
并让java处理它。您可能会发现这个有用的
公共类Sort2D{
公共静态void main(字符串参数[]){
字符串ss[][]={
{“Home”,“0.1256784”},
{“联系人”,“-0.56789”},
{“参考”,“1.36589”},
{“下一步”,“3.678456”}
};
sort(ss,新的Comparator(){
公共整数比较(字符串[]s1,字符串[]s2){
double d1=double.parseDouble(s1[1]);
double d2=double.parseDouble(s2[1]);
返回双重比较(d1,d2);
}
});
for(字符串[]s:ss){
System.out.println(s[0]+“:”+s[1]);
}
}
}

替代方法:您可以将数据复制到树映射(如果所有双精度值都是唯一的),并让映射到排序:

Map<Double, String> map = new TreeMap<Double, String>();
for (String[] row:myArray) {
   map.put(Double.parseDouble(row[1]), row[1]);
Map Map=newtreemap();
用于(字符串[]行:myArray){
map.put(Double.parseDouble(行[1]),行[1]);

entrysets迭代器现在以升序顺序返回值。

尝试在O(n log n)中运行合并排序,而不是O(n^2)比如冒泡排序:为什么要重写equals?除此之外,这个解决方案看起来不错+1感谢回复。我尝试了上面的代码,当我运行代码时,抛出了一些NullPointerException。它出现在“Arrays.sort(ss,new Comparator()”@Aly-good catch,我删除了“equals”行中override;我添加它是因为它出现在
比较器
界面中,但对于这个简单的示例,它不是必需的,因为
对象
提供了一个默认的实现。@Naveen-这段代码自己编译和运行,您必须以某种方式将其放入您自己的代码结构中;我只演示了您要求的部分。我得到了它起作用了。我犯的错误是我从ss[0][1]的ss[1][1]安装启动了数组。因此它在读取ss[0][1]时报告了NullpointerException。非常感谢maerics。。
Map<Double, String> map = new TreeMap<Double, String>();
for (String[] row:myArray) {
   map.put(Double.parseDouble(row[1]), row[1]);