2015-08-28 1 views
1

Это реализация 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: непроверенная для деталей.

+0

Пожалуйста перекомпилировать с -Xlint: снят для деталей. Это даст вам более подробное объяснение. Если это не имеет смысла для вас, приложите сюда сообщение об ошибке. – Thilo

+1

'merge' возвращает необработанный ArrayList, который вы назначаете' ArrayList '. – TNT

+1

У вас есть вопросы? –

ответ

1

ли ваше родовое использование правильно .. Изменить

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

в

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