0

マージが既に2つのlinkedListをソートし、最終出力をSorted LinkedListとして取得するという質問を受けました。だから私はマージソートアルゴリズムのマージメソッドを使用して出力を得ました.それは実際にそれを行う正しい方法ですか、それとも他の方法に従うべきですか.

ここに理解のためのコードがあります -

private <T extends Comparable<T>> List<T> merge(List<T> left , List<T> right){
    List<T> result = new ArrayList<T>();
    while(left.size()>0 && right.size()>0){
        //Left is less than right
        if(left.get(0).compareTo(right.get(0))<0)
            result.add(left.remove(0)); //add the left if small and remove it from the list             
        else
            result.add(right.remove(0));
    }

    //if left size is greater than 0 , the needed to add left to result
    //it proves that if any of the sizes of left/right is more then those are greater size
    if(left.size()>0)
        result.addAll(left);
    else
        result.addAll(right);


    return result;
}

私の入力 -

 List<String> sorted1 = new LinkedList<String>();
            sorted1.add("Asdsd");
            sorted1.add("ReR");
            sorted1.add("asdasd");
            sorted1.add("ghjhj");
            sorted1.add("zxcxc");
            List<String> sorted2 = new LinkedList<String>();
            sorted2.add("Awdf");
            sorted2.add("Gautom");
            sorted2.add("asa");
            sorted2.add("ggg");
            sorted2.add("qwq");
            sorted2.add("rtrt");

            System.out.println("ORIGINAL SoRTED LIST\n" + 
                    "=================\n" +
                    sorted1 + "and "+sorted2+"\n");
            List<String> sorted_String2 = new MergeSortAbhishek().merge(sorted1,sorted2);
            System.out.println("\nFINAL SORTED LIST\n" +
                    "=================\n" +
                    sorted_String2 + "\n");
4

2 に答える 2

0

個人的には、2つのソートされたリストを正確にマージする特別な方法を使用したいと思います。何もソートしないためmerge、fromのメソッドは混乱する可能性があります。MergeSortAbhishekそして、このメソッドは、ソートのためにいくつかの特別なアクションを実行する場合があります。

于 2012-04-26T11:11:54.263 に答える
0

私には正しいように聞こえます。「マージソートからのマージ引数」が意味するコードを見ないと、確かに言うことはできませんが、概念は正しいです。

参考までに、これはコード レビュー サイトに適した質問です。

CodeReview スタック交換

于 2012-04-26T10:50:33.270 に答える