Java implements merge sort

public class MergeSort {

public static void mergeSort(int [] list){
    if(list.length>1){
        
        
        
        int [] firstHalf = new int[list.length/2];
        System.arraycopy(list, 0, firstHalf, 0, list.length/2);
        mergeSort(firstHalf);
        
        int []secondHalf = new int[list.length-list.length/2];
        System.arraycopy(list,list.length/2 , secondHalf, 0, secondHalf.length);
        mergeSort(secondHalf);
        
        
        
        merge(firstHalf,secondHalf,list);
        for(int num :list){
            System.out.print(num+" ");
        }
        System.out.println();
    }
}
public static void merge(int []list1,int []list2,int []temp){
    int current1 = 0;
    int current2 = 0;
    int current3 = 0;
    while(current1<list1.length&&current2<list2.length){
        if(list1[current1]<list2[current2])
            temp[current3++] = list1[current1++];
        else
            temp[current3++] = list2[current2++];
    }
    while(current1<list1.length)
        temp[current3++] = list1[current1++];
    while(current2<list2.length)
        temp[current3++] = list2[current2++];
}
public static void main(String[] args) {
    int [] list = {2,3,2,5,6,1,-2,3,14,12};
    mergeSort(list);
    for(int i=0;i<list.length;i++){
        System.out.print(list[i]+" ");
    }

}

}

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325800192&siteId=291194637