-
[2021_동계_모각코] 02주차(01/06)[CNU] Mogakco 2021. 1. 6. 23:03
02주차(01/06) 목표
자료구조와 함께 배우는 알고리즘 입문 C언어편_6장 정렬
생활코딩 머신러닝야학 텐서플로우 강좌 수강하기
#include <stdio.h> #include <stdlib.h> #define swap(type, x, y) do { type t = x; x = y; y = t; } while(0) void bubblesort(int a[], int n) { for (int i = 0; i < n - 1; i++) { for (int j = n - 1; j > i; j--) if (a[i - j] > a[j]) swap(int, a[j - 1], a[j]); } } int main(void) { int i, nx; int* x; puts("버블 정렬"); printf("요소 개수 : "); scanf("%d", &nx); x = calloc(nx, sizeof(int)); for (i = 0; i < nx; i++) { printf("x[%d] : ", i); scanf("%d", &x[i]); } bubble(x, nx); puts("오름차순으로 정렬했습니다."); for (i = 0; i < nx; i++) printf("x[%d] = %d\n", i, x[i]); free(x); return 0; }
void bubble(int a[], int n) { for (int i = 0; i < n - 1; i++) { int exchg = 0; for (int j=n-1; j>i; j--) if (a[j - 1] > a[j]) { swap(int, a[j - 1], a[j]); exchg++; } if (exchg == 0) break; } }
void bubble(int a[], int n) { int k = 0; while (k < n - 1) { int j; int last = n - 1; for (j=n-1; j>k; j--) if (a[j - 1] > a[j]) { swap(int, a[j - 1], a[j]); last = j; } k = last; } }
void selection(int a[], int n) { for (int i = 0; i < n - 1; i++) { int min = i; for (int j = i + 1; j < n; j++) if (a[j] < a[min]) min = j; swap(int, a[i], a[min]); } }
#include <stdio.h> #include <stdlib.h> void insertion(int a[], int n) { int i, j; for (i = 1; i < n; i++) { int tmp = a[i]; for (j = i; j > 0 && a[j - 1] > tmp; j--) a[j] = a[j - 1]; a[j] = tmp; } } int main(void) { int i, nx; int* x; puts("단순 삽입 정렬"); printf("요소 개수 : "); scanf("%d", &nx); x = calloc(nx, sizeof(int)); for (i = 0; i < nx; i++) { printf("x[%d] : ", i); scanf("%d", &x[i]); } insertion(x, nx); puts("오름차순으로 정렬했습니다."); for (i = 0; i < nx; i++) printf("x[%d] = %d\n", i, x[i]); free(x); return 0; }
#include <stdio.h> #include <stdlib.h> void shell(int a[], int n) { int i, j, h; for(h=n / 2; h>0; h/=2) for (i = h; i < n; i++) { int tmp = a[i]; for (j = i - h; j >= 0 && a[j] > tmp; j -= h) a[j + h] = a[j]; a[j + h] = tmp; } } int main(void) { int i, nx; int* x; puts("셀 정렬"); printf("요소 개수 :"); scanf("%d", &nx); x = calloc(nx, sizeof(int)); for (i = 0; i < nx; i++) { printf("x[%d] : ", i); scanf("%d", &x[i]); } shell(x, nx); puts("오름차순으로 정렬했습니다."); for (i = 0; i < nx; i++) printf("x[%d] = %d\n", i, x[i]); free(x); return 0; }
회고록
지난 시간에도 했었던 자료구조와 함께 배우는 알고리즘 입문 책 6장을 공부했다. 정렬은 꾸준히 다루는 부분이지만 확실하게 알아둘 필요가 있다는 생각이 들었다. 원래 C언어랑 자바 공부를 하려다가 머신러닝 강의를 듣게 되었는데, 관심이 가는 분야라서 확실히 도움이 되었다. 무료로 유튜브에 공개되어 있어 구글이 제공하는 텐서플로우를 활용해 파이썬으로 가볍게 머신러닝을 익힐 수 있었다. 꾸준히 수강하고 코드를 따라 치면서 익숙해진다면, 이번 방학이 끝날 때쯤은 간단하게라도 머신러닝 프로그램을 구현해보고자 하는 마음이 있다.
'[CNU] Mogakco' 카테고리의 다른 글
[2021_동계_모각코] 06주차(02/03) (0) 2021.02.09 [2021_동계_모각코] 04주차(01/27) (0) 2021.01.27 [2021_동계_모각코] 01주차(12/30) (1) 2020.12.30 [2021_ 동계_모각코] 목표 및 활동계획 (0) 2020.12.19 [2020_하계_모각코] 08주차(08/04) (2) 2020.08.06