Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 递归合并排序只返回ArrayList的前半部分_Java_Arraylist_Mergesort - Fatal编程技术网

Java 递归合并排序只返回ArrayList的前半部分

Java 递归合并排序只返回ArrayList的前半部分,java,arraylist,mergesort,Java,Arraylist,Mergesort,对于CS作业,我尝试使用合并排序方法对ArrayList进行排序。这是我的密码: public static LinkedList<Object> merge (LinkedList<Object> lsta, LinkedList<Object> lstb) { LinkedList<Object> result = new LinkedList<Object>(); LinkedList<Object>

对于CS作业,我尝试使用合并排序方法对ArrayList进行排序。这是我的密码:

public static LinkedList<Object> merge (LinkedList<Object> lsta, LinkedList<Object> lstb) {
    LinkedList<Object> result = new LinkedList<Object>();
    LinkedList<Object> lstaNew = (LinkedList<Object>) lsta.clone();
    LinkedList<Object> lstbNew = (LinkedList<Object>) lstb.clone();
    while(lstaNew.size()>0||lstaNew.size()>0) {
        if(lstaNew.size()>0&&lstbNew.size()>0) {
            if( ((Comparable) lstaNew.getFirst()).compareTo(lstbNew.getFirst()) < 0 ) {
                result.add(lstaNew.getFirst());
                lstaNew.remove();
            }
            else {
                result.add(lstbNew.getFirst());
                lstbNew.remove();
            }
        }
        else if(lstaNew.size()>0) {
            result.add(lstaNew.getFirst());
            lstaNew.remove();
        }
        else {
            result.add(lstbNew.getFirst());
            lstbNew.remove();
        }
    }
    return result;
}

public static LinkedList<Object> sort (LinkedList<Object> lst) {
    if (lst.size() <= 1) return lst;
    LinkedList<Object> left = new LinkedList<Object>();
    LinkedList<Object> right = new LinkedList<Object>();
    int midpoint = lst.size()/2;
    for (int i=0;i<midpoint;i++) left.add(lst.get(i));
    for (int i=midpoint;i<lst.size();i++) right.add(lst.get(i));
    return merge(sort(left),sort(right));
}
公共静态链接列表合并(链接列表lsta,链接列表lstb){
LinkedList结果=新建LinkedList();
LinkedList lstaNew=(LinkedList)lsta.clone();
LinkedList lstbNew=(LinkedList)lstb.clone();
而(lstaNew.size()>0 | | lstaNew.size()>0){
如果(lstaNew.size()>0&&lstbNew.size()>0){
如果(((可比较)lstaNew.getFirst()).compareTo(lstbNew.getFirst())<0){
add(lstaNew.getFirst());
lstaNew.remove();
}
否则{
add(lstbNew.getFirst());
lstbNew.remove();
}
}
else if(lstaNew.size()>0){
add(lstaNew.getFirst());
lstaNew.remove();
}
否则{
add(lstbNew.getFirst());
lstbNew.remove();
}
}
返回结果;
}
公共静态LinkedList排序(LinkedList lst){

如果(lst.size()代码中有输入错误-

while(lstaNew.size()>0||lstaNew.size()>0) {
本应是—

while(lstaNew.size()>0||lstbNew.size()>0) {