U E D R , A S I H C RSS

새싹교실/2017/한조/0524



1. 참여자 명단


튜터 장용운 11학번
튜티 정재형 17학번
조원희

2. 수업

2.1. 진행

1. 장소 : 6층 학회실
2. 시간 : 오후 3시 ~ 5시

2.2. 내용

머지 소트 분석하기
  • 머지 소트를 짜는 과정을 살펴본다
  • 머지 소트의 원리를 이해한다

3. 코드

3.1. 예제1

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <time.h>

#define ARRAYSIZE 20

void mergesort(int*, int);

int main(void) {
	int array[ARRAYSIZE];
	//int * pArr = (int*)malloc(sizeof(int)* 100);
	
	srand(time(NULL));
	for (int i = 0; i < ARRAYSIZE; i++)
		array[i] = rand() % 100;

	for (int i = 0; i < ARRAYSIZE; i++) {
		printf("%d ", array[i]);
	}
	printf("\n");

	mergesort(array, ARRAYSIZE);

	for (int i = 0; i < ARRAYSIZE; i++) {
		printf("%d ", array[i]);
	}
	printf("\n");

	system("PAUSE");

	return 0;
}

void mergesort(int* arr, int size) {
	const int leftsize = (size + 1) / 2;

	if (size <= 1) return;

	mergesort(arr, leftsize);
	mergesort((arr + leftsize), size/2);

	int* temp = (int*)malloc(sizeof(int)* size);


	int a = 0, b = 0;
	// 작은 숫자 찾기(한 쪽이 소진될 때까지)
	while (a != (size + 1) / 2 && b != size / 2) {
		if (arr[a] < arr[b + leftsize]) {
			temp[a + b] = arr[a];
			a++;
		}
		else {
			temp[a + b] = arr[b + leftsize];
			b++;
		}
	}
	// 뒷처리
	if (a == (size + 1) / 2) {
		while ((a + b) < size) {
			temp[a + b] = arr[leftsize + b];
			b++;
		}
	}
	else {
		while ((a + b) < size) {
			temp[a + b] = arr[a];
			a++;
		}
	}

	// 덮어쓰기
	for (int i = 0; i < size; i++)
		arr[i] = temp[i];

	// 메모리 누수 방지
	free(temp);
}

4. 숙제

1. 이 페이지에 후기 작성하기!
2. 오늘 공부한 개념 수업 페이지에 정리하기!

5. 후기

  • 후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
    • Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.







6. 숙제 제출

6.1. 정재형


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:30:09
Processing time 0.0221 sec