最初に 2 つの個別のリストの要素にアクセスして比較し、値が小さい方の要素に基づいて、小さい方の要素を削除し、3 番目のリスト内の位置を割り当てる必要があります。どうすればこれを達成できますか?
2 に答える
1
リストの1つの新しいリストに両方のリストの要素を追加し、昇順で並べ替えるだけでよいと思います(例:以下(疑似コード):
List<Integer> list1 = Arrays.asList(2,4,5);
List<Integer> list2 = Arrays.asList(2,6,8,9,12,56);
List<Integer> mergedList = new ArrayList<Integer>();
mergedList.addAll(list1);
mergedList.addAll(list2);
Collections.sort(mergedList);
mergedList
ソートされた要素が必要になりました。
于 2012-10-07T03:59:31.850 に答える
0
参考までに、手動マージ プログラムのサンプルを以下に示します。
List<Integer> list1 = Arrays.asList(2,4,5);
List<Integer> list2 = Arrays.asList(2,6,8,9,12,56);
List<Integer> mergedList1 = new ArrayList<Integer>();
mergedList1.add(list1.get(0));
for(int indx = 1; indx< list1.size(); indx++){
int valueToMerge = list1.get(indx);
boolean merged = false;
for(int indx1 = 0; indx1< mergedList1.size(); indx1++){
if(mergedList1.get(indx1) > valueToMerge){
//add the value in middle
mergedList1.add(indx1, valueToMerge);
merged = true;
break;
}
}
if(!merged){
//add the value in the end
mergedList1.add(valueToMerge);
}
}
for(int valueToMerge: list2){
boolean merged = false;
for(int indx1 = 0; indx1< mergedList1.size(); indx1++){
if(mergedList1.get(indx1) > valueToMerge){
//add the value in middle
mergedList1.add(indx1, valueToMerge);
merged = true;
break;
}
}
if(!merged){
//add the value in the end
mergedList1.add(valueToMerge);
}
}
于 2012-10-07T04:28:40.640 に答える