"병합정렬 구현"의 두 판 사이의 차이

(새 문서: 분류: 정렬 ==C== 분류: C <source lang='c'> #include <stdio.h> #define SIZE 10 int a[SIZE] = {3,4,2,1,7,5,8,9,0,6}; int size = SIZE; int b[SIZE-1]; void merge(int low, in...)
 
33번째 줄: 33번째 줄:


==같이 보기==
==같이 보기==
* [[정렬 구현]]
* [[병합정렬]]
* [[병합정렬]]

2018년 7월 15일 (일) 10:17 판

1 C

#include <stdio.h>
#define SIZE 10
int a[SIZE] = {3,4,2,1,7,5,8,9,0,6};
int size = SIZE;
int b[SIZE-1];
void merge(int low, int mid, int high) {
	int l1, l2, i;
	for(l1=low, l2=mid+1, i=low; l1<=mid && l2<=high; i++) {
		if(a[l1]<=a[l2]) b[i]=a[l1++];
		else b[i]=a[l2++];
	}
	while(l1 <= mid) b[i++]=a[l1++];
	while(l2 <= high) b[i++]=a[l2++];
	for(i=low; i<=high; i++) a[i]=b[i];
}
void merge_sort(int low, int high) {
	if(low >= high) return;
	int mid = (low+high)/2;
	merge_sort(low, mid);
	merge_sort(mid+1, high);
	merge(low, mid, high);
}
int main() { 
	merge_sort(0, SIZE-1);
	for(int i=0; i<SIZE; i++) printf("%d ", a[i]);
	// 0 1 2 3 4 5 6 7 8 9
}

2 같이 보기

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}