0
안녕하세요. 병합 정렬 작업을하고 있습니다. 코드가 적합하지만 올바른 결과를 얻지 못했습니다. 내 코드는 다음과 같습니다. 결과는 "876323149"입니다. 대단히 감사합니다.자바 병합 정렬이 작동하지 않습니다.
public class MergeSort
{
private static int[] local; // for use in copying
private static int[] a;
public static void main(String[] args)
{
int[] test = {2,3,1,4,7,8,6,3,9};
sort(test);}
public static void sort(int[] orig)
{
int n = orig.length;
local = new int[n];
a = orig;
recursiveSort(0, n-1);
for(int i = 0; i < a.length; i ++){
System.out.print(a[i]);
}
}
private static void recursiveSort(int lo, int hi)
{
int mid =(hi + lo)/2;
if(hi-lo > 2){
recursiveSort(lo, mid);
recursiveSort(mid + 1, hi);
merge(lo, mid + 1, hi);
}
}
private static void merge(int lo, int mid, int hi)
{
int d = lo;
int b = mid + 1;
int c = lo;
for (int i = lo; i <= hi; i++) {
local[i] = a[i];
}
while(d <= mid && b <= hi){
if(local[d] > local[b]){
a[c] = local[d];
d++;}
else{
a[c] = local[b];
b++;}
c++;}
while (d <= mid) {
a[c] = local[d];
c++;
d++;
}
}
}
아니, 그냥 오류가 무엇인지 알아 내려고 노력하고 그 웹 사이트에 비교 시도하고 난 무엇 인 근본적으로이 코드를 기반으로 – user3808597