Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并已在java中排序的LinkedList_Java_Sorting_Data Structures_Linked List - Fatal编程技术网

合并已在java中排序的LinkedList

合并已在java中排序的LinkedList,java,sorting,data-structures,linked-list,Java,Sorting,Data Structures,Linked List,我得到一个问题,说合并已经排序了2个linkedList,并将最终输出作为排序的linkedList。 所以我使用了合并排序算法的合并方法,得到了输出, 这真的是正确的方法吗?还是我应该采取其他方法 下面是一段代码,供您理解- private <T extends Comparable<T>> List<T> merge(List<T> left , List<T> right){ List<T> result =

我得到一个问题,说合并已经排序了2个linkedList,并将最终输出作为排序的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;
}
私有列表合并(左列表、右列表){
列表结果=新建ArrayList();
while(left.size()>0&&right.size()>0){
//左不如右
if(left.get(0).compareTo(right.get(0))0)
结果:addAll(左);
其他的
结果:addAll(右);
返回结果;
}
我的意见-

 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");
List sorted1=newlinkedlist();
1.添加(“Asdsd”);
1.添加(“ReR”);
1.添加(“asdasd”);
1.添加(“ghjhj”);
1.添加(“zxcxc”);
List sorted2=新的LinkedList();
2.添加(“Awdf”);
2.添加(“Gautom”);
2.添加(“asa”);
2.添加(“ggg”);
2.添加(“qwq”);
2.添加(“rtrt”);
System.out.println(“原始排序列表\n”+
“=========================\n”+
排序1+”和“+sorted2+”\n”);
List sorted_String2=new MergeSortAbhishek().merge(sorted1,sorted2);
System.out.println(“\n最终排序列表\n”+
“=========================\n”+
已排序的字符串2+“\n”);

听起来不错。如果没有看到您所说的“merge-arg from-merge-sort”的代码,我不能肯定,但这个概念是正确的

仅供参考,对于代码审查站点来说,这是一个更合适的问题


个人而言,我更喜欢使用特殊的方法来精确合并2个已排序的列表。
merge
中的
MergeSortAbhishek
方法可能会混淆,因为您不排序任何内容。此方法可能会对排序执行一些特殊操作。

您能完成此操作吗?可能会有所帮助。您所说的Merg合并方法是什么意思e排序算法?您是自己实现的还是使用了一些现有的算法?