感謝來自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