Arrays 使用LinkedList在字符串中合并排序

Arrays 使用LinkedList在字符串中合并排序,arrays,string,linked-list,mergesort,compareto,Arrays,String,Linked List,Mergesort,Compareto,我使用LinkedList作为一个动态数组,然后这个数组包含需要使用合并排序算法按字母顺序排序的字符串,该算法添加到方法中,结果证明不起作用。有什么建议吗 public static LinkedList<String> merge(LinkedList<String> linkedList, LinkedList<String> linkedList2) { LinkedList<String> result = new Link

我使用LinkedList作为一个动态数组,然后这个数组包含需要使用合并排序算法按字母顺序排序的字符串,该算法添加到方法中,结果证明不起作用。有什么建议吗

public static LinkedList<String> merge(LinkedList<String> linkedList, LinkedList<String> linkedList2) {
        LinkedList<String> result = new LinkedList<String>();
        if(linkedList.size() == 0)
            result.add(linkedList2.remove());
        else if (linkedList2.size() == 0)
            result.add(linkedList.remove());

        for(int i=0; i<linkedList.size(); i++) {
            if(linkedList.get(i).compareTo(linkedList2.get(i)) < 0)
                result = linkedList;
            else
                result = linkedList2;
        }

        return result;
    }
公共静态LinkedList合并(LinkedList LinkedList,LinkedList LinkedList 2){
LinkedList结果=新建LinkedList();
if(linkedList.size()==0)
add(linkedList2.remove());
else if(linkedList2.size()==0)
add(linkedList.remove());

对于(int i=0;i这里的逻辑是错误的,请参阅正确逻辑的注释:

    while(0 < linkedList.size() || 0 < linkedList2.size())
        if(0 == linkedList.size())        // if linkedList is empty
            result.add(linkedList.remove());        // should add head of linkedlist2 to result
        else if (0 == linkedList2.size())        // vice
            result.add(linkedList2.remove());       // versa
        else {
            linkedList.get(0).compareTo(linkedList2.get(0));      // else add the smaller of the two; you are just comparing, not adding the smaller
        }
while(0
您的循环很好,但逻辑需要更正。现在,空案例的逻辑是正确的,但您需要再次将它们移回while循环。请考虑:如果其中一个列表为空,则我们需要将所有其他列表添加到合并的列表中。比较案例是错误的-您需要将列表中较小的元素添加到一次一个。