感谢来自Zirak在我previous post帮助我实现了在JavaScript如下:的java:排序阵列1基于数组2
var arr1 =[0,1,2,3];
var arr2 =["ac", "bc", "ad", "e"];
var result = arr1 .sort(function(i, j){return arr2[i].localeCompare(arr2[j])})
document.write(result);
实现这一目标是在JavaScript相当紧凑的方式,可以在Java实现这个也是通过这样简单来实现的吗?我只能想到实现像可比界面如下:
public class testCompare {
public static String[] arr2={"ac", "bc", "ad", "e"};
public static Obj[] arr1={new Obj(0), new Obj(1), new Obj(2), new Obj(3)};
static class Obj implements Comparable{
int index=0;
public Obj(int i){
index=i;
}
@Override
public int compareTo(Object o) {
return arr2[index].compareTo(arr2[((Obj)o).index]);
}
}
}
但如果数组有X的许多项目,那么我将不得不创建X许多OBJ文件,有另一种方式,我可以做到这一点更简单?另一个问题是,如果我采用上述方法,在java和JavaScript中排序的时间复杂度是多少,它们都是O(n^2)
?非常感谢
这很好,非常感谢 – user685275 2011-05-05 14:05:46
我不明白这一点。不是i1和i2是arr1的值,你将它们当作arr1的索引。 – Haider 2016-11-11 17:26:33
@Haider是的,这就是OP所要求的。当比较1和2时,他想比较“bc”和“ad”,因为“bc”在索引1,“ad在索引2”。 – 2016-11-11 17:33:30