0

最初に 2 つの個別のリストの要素にアクセスして比較し、値が小さい方の要素に基づいて、小さい方の要素を削除し、3 番目のリスト内の位置を割り当てる必要があります。どうすればこれを達成できますか?

4

2 に答える 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 に答える