본문 바로가기

CS/DataStructure11

[자료구조] 순환함수(Recursive Function) 순환함수(Recursive Function) 개요 순환(Recursion) : 알고리즘이 자기 자신을 반복적으로 호출하는 과정[사례1] 팩토리얼 계산 - n! = if (n=0) { n=1 } if (n>=1) {n=nX(n-1)!} - C로 구현한 순환함수 (스택구조 사용) int fact(int n) {if (n0; k--)v=v*k;return v; } - 공간 및 시간복잡도 비교 (순환함수의 경우 내부 스택 사용) 순환과 반복함수 비교- 순환함수 1. 순환문제 : 자연스러운 코딩, 코딩이 단순하다. 2. 스택 사용으로 인한 수행시간 오버헤드- 반복함수 1. 순환문제 : 코딩이 어려움 2. 수행시간 오버헤드가 없음- 언제 순환함수를 사용할 것인가? 1. 코딩의 단순화 및 이해도 증진 2. 시간 및 .. 2017. 9. 25.
[자료구조] 알고리즘의 분석 좋은 알고리즘?- 수행시간이 적다.- 사용된 메모리 공간이 적다. 알고리즘의 평가 기준- 공간 복잡도(Space Complexity) : 알고리즘 수행에 필요한 메모리 공간- 시간 복잡도(Time Complexity) : 알고리즘의 수행 시간 공간 복잡도 분석- 공간 복잡도 : 고정공간(입력값 상관없이 독립적) + 가변공간(입력 크기) * 고정공간 : 문제의 인스탄스(입출력 크기)에 무관, 일정한 양의 메모리 공간* 가변공간 : 문제의 인스탄스에 따라 가변적인 메모리 공간 공간 복잡도 분석 예float sum(float list[], int n) { float tempsum = 0; int i; for(i = 0; i < n; i++) tempsum += list[i]; return tempsum; } .. 2017. 9. 24.
[자료구조] 자료구조 개요 * 알고리즘? : 특정한 일을 수행하는 명령어들의 유한 집합 * 자료구조 : 주어진 문제를 해결하기 위해 필요한 데이터의 조직화 * 프로그램 : 프로그래밍 언어를 사용한 알고리즘의 구현 [예제로 보는 개발 과정]문제 : n개의 정수 값들이 주어질 경우 이 값들 중에서 최대값을 찾기-> 자료구조 설계-> 알고리즘 기술-> 프로그램 구현 [알고리즘 문제]유한한 입력 데이터-> 자료구조+알고리즘-> 입력 데이터에 대응되는 결과 [프로그램 개발 과정]-소프트웨어 공학에서 배움- 자료구조/알고리즘이 해당되는 부분 :요구사항->분석->설계->정제 및 코딩->검증 [알고리즘의 조건]- 입력 : 0개 이상 입력- 출력 : 1개 이상 출력- 명확성 : 각 명령은 모호하지 않아야 한다.- 유한성 : 한정된 단계 후에 반드.. 2017. 9. 21.