以下内容来自求职面试:
对于排序数组的数组,编写一个统一数组的函数 数组成一个排序数组。
我考虑使用HashSet<E>
,并为每个数组添加一个完整的数组,只需一个订单(我不知道,但它必须是预先编写的方法吗?! ),但我可以发誓这是一个简单的解决方案...
有什么建议吗?
谢谢!
答案 0 :(得分:1)
你基本上想从mergesort算法中窃取一个方法,该算法结合了两个(可以扩展到更多)数组。这是一个例子(用于合并2个数组):
private static int[] merge(int[] left, int[] right) {
int lengthResult = left.length + right.length;
int[] result = new int[lengthResult];
int indexL=0, indexR=0, indexResult = 0;
//while there are elements left in left or right
while(indexL < left.length || indexR < right.length){
//BOTH left and right still have elements
if(indexL < left.length && indexR < right.length){
//if the left item is greater than right item
if(left[indexL] <= right[indexR]){
result[indexResult] = left[indexL];
indexL++;
indexResult++;
}else{
result[indexResult] = right[indexR];
indexR++;
indexResult++;
}
//means only left OR right have elements left
//see if left has stuff
}else if(indexL < left.length){
result[indexResult] = left[indexL];
indexL++;
indexResult++;
}else if(indexR < right.length){
result[indexResult] = right[indexR];
indexR++;
indexResult++;
}
}
return result;
}