MergeSort.java使用未经检查或不安全的操作

时间:2015-08-28 03:54:36

标签: java mergesort

这是我自己编写的合并排序的Java实现:

import java.util.*;

public class MergeSort {

public static void main(ArrayList<Integer> L){
    ArrayList<Integer> inputArr= new ArrayList<Integer>();
    inputArr.add(43);
    inputArr.add(32);
    inputArr.add(4);
    inputArr.add(523);
    inputArr.add(67);
    inputArr.add(45);
    inputArr.add(66);
    MergeSort mms=new MergeSort();
    ArrayList<Integer> outputArr= new ArrayList<Integer>();
    outputArr=mms.sorting(inputArr);

    for (int i=0; i<outputArr.size(); i++){
        System.out.print(outputArr.get(i));
        System.out.print(" ");
    }

}

public  ArrayList<Integer> sorting(ArrayList<Integer> L){
    int NumEelement = L.size()/2 + L.size()%2;
    ArrayList<Integer> A = new ArrayList<Integer>();
    ArrayList<Integer> B = new ArrayList<Integer>();
    A = (ArrayList<Integer>) L.subList(0, NumEelement);
    B = (ArrayList<Integer>) L.subList(NumEelement+1, L.size()-1);
    sorting(A);
    sorting(B);
    ArrayList<Integer> result=merge(A,B);
    return result;
}
public ArrayList merge(List<Integer> A, List<Integer> B){
    int i=0;
    int j=0;

    ArrayList<Integer> newL = new ArrayList<Integer> ();

    for(int k=0;k<(A.size()+ B.size());k++){
        if (A.get(i)< B.get(j)){
            newL.set(k, A.get(i));
            i++;
        }else{
            newL.set(k, B.get(j));
            j++;
        }
    }
    return newL;
}
}

此代码符合。但是,有两个注意事项:1。MergeSort.java使用未经检查或不安全的操作。 2.使用-Xlint重新编译:取消选中以获取详细信息。

1 个答案:

答案 0 :(得分:1)

正确使用您的通用用法.. 改变

public ArrayList merge(List<Integer> A, List<Integer> B){

public ArrayList<Integer> merge(List<Integer> A, List<Integer> B){