게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
합병정렬 소스좀 봐주세요 ㅠㅠ
게시물ID : programmer_16605짧은주소 복사하기
작성자 : 꼬마스좁
추천 : 0
조회수 : 322회
댓글수 : 4개
등록시간 : 2016/04/08 17:26:24
옵션
  • 본인삭제금지
  • 외부펌금지

public static void mergeSort(int n, int[] s) {

int h = n/2, m = n - h;

int[] U = new int[h];

int[] V = new int[m];


if(n > 1) {

for(int i = 0; i < h; i++)

U[i] = s[i];

for(int i = 0; i < m; i++) // h + m = n

V[i] = s[i + h];


mergeSort(h,U);

mergeSort(m,V);

merge(h, m, U, V, s);

}

}


public static void merge(int h, int m, int[] U, int[] V, int[] s) {

int i, j, k;

i = 0; j = 0; k = 0; // k = Sorted Array Index


while(i < h && j < m) {

if(U[i] < V[i]) {

s[k] = U[i];

i++;

} else {

s[k] = V[j];

j++;

}

k++;

}


if(i >= h) {

while(j < m) {

s[k] = V[j];

k++;

j++;

}

} else {

while(i < h) {

s[k] = U[i];

k++;

i++;

}

}


결과는 아래처럼 분할 끝나고 합병하는 제일 처음 단계에서만 크기 비교가 이루어지구요 그 이후론 그냥 합치기만 되네요;

뭐가 문제인지 ㅠㅠ 교재 알고리즘 그대로 따라했는데도 결과가 이상하게 나오네요.


스크린샷 2016-04-08 오후 5.18.50.png

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호