2016-10-19 2 views
0

Я новичок в Java и попытался реализовать mergesort в Java. Тем не менее, даже после запуска программы несколько разПроблема с рекурсивной сортировкой сортировки merge

это метод сортировки слиянием

public static int[] mergeSort(int[] array) { 
    int size = array.length; 
    if (size < 2) 
     return array; 
    else { 
     int mid = array.length/2; 
     int leftSide = mid; 
     int rightSide = size - mid; 
     int[] left = new int[leftSide]; 
     int[] right = new int[rightSide]; 
     for (int i = 0; i < mid; i++) 
      left[i] = array[i]; 
     for (int i = mid; i < size; i++) 
      right[i - mid] = array[i]; 
     left = mergeSort(left); 
     right = mergeSort(right); 
     return merge(left, right); 
    } 
} 

и это метод слияния

private static int[] merge(int[] left, int[] right) { 
    int[] sum = new int[left.length + right.length]; 
    int i = 0, j = 0, k = 0; 
    while (i < left.length && j < right.length) { 
     if (left[i] < right[i]) { 
      sum[k] = left[i]; 
      i++; 
      k++; 
     } else { 
      sum[k] = right[j]; 
      j++; 
      k++; 
     } 
    } 
    while (i < left.length) { 
     sum[k] = left[i]; 
     k++; 
     i++; 
    } 
    while (j < right.length) { 
     sum[k] = right[j]; 
     k++; 
     j++; 
    } 
    return sum; 
} 

что все я устал , пожалуйста, помогите мне найти его

ответ

0

Я узнал об ошибке

здесь

while (i < left.length && j < right.length) { 
    if (left[i] < right[j) { 
     sum[k] = left[i]; 
     i++; 
     k++; 
    } else { 
     sum[k] = right[j]; 
     j++; 
     k++; 
    } 
} 
Смежные вопросы