2
다음 mergesort 코드를 작성했습니다.머지 소스 구현시 런타임 오류가 발생했습니다.
public class mergesort {
public static int a[];
public static void merges (int work[], int low, int high) {
if (low==high)
return;
else {
int mid = (low+high)/2;
merges(work,low,mid);
merges(work,mid+1,high);
merge(work,low,mid+1,high);
}
}
public static void main (String[] args) {
int a[] = new int[] {64, 21, 33, 70, 12, 85, 44, 99, 36, 108};
merges(a,0,a.length-1);
for (int i=0; i<a.length; i++) {
System.out.println(a[i]);
}
}
public static void merge (int work[], int low, int high, int upper) {
int j = 0;
int l = low;
int mid = high-1;
int n = upper-l+1;
while (low<=mid && high<=upper)
if (a[low] < a[high])
work[j++] = a[low++];
else
work[j++] = a[high++];
while (low <= mid)
work[j++]=a[low++];
while (high <= upper)
work[j++] = a[high++];
for (j=0;j<n;j++)
a[l+j]=work[j];
}
}
작동하지 않습니다. 편집 후이 오류가 있습니다.
java.lang.NullPointerException
at mergesort.merge(mergesort.java:45)
at mergesort.merges(mergesort.java:12)
at mergesort.merges(mergesort.java:10)
at mergesort.merges(mergesort.java:10)
at mergesort.merges(mergesort.java:10)
at mergesort.main(mergesort.java:27)
이 문제는 어떻게 해결할 수 있습니까?
어떤 라인이 45 라인입니까? –
@RickL - 태그 지정 관련 - 'NullPointerException'은 컴파일러 오류가 아니지만 런타임 오류입니다. – Kobi
네, 저의 실수입니다! – RickL