데이타구조
2016-03-08
수업 계획 및 기본 개념 소개
- 학점 평가 방침
- 실습 환경 안내
- 과제 제출 안내
- 출석/퀴즈 25%
- 과제 25%
- 중간 25%
- 기말 25%
- Google Drive 공유 폴더를 통해 (종이 X, 메일 X)
- DS16<이름><학번> 폴더를 만들고 (예: DS16김연아123456)
폴더 공유설정으로 kyagrd@gmail.com 에게 공유 (편집권한)
- Google 메일 계정만 있으면 Google Drive 서비스 이용 가능
- Google 메일 계정은 무료로 만들 수 있으며
참고로 안드로이드 스마트폰 사용자는 누구나 이미 보유
- 데이타 구조와 알고리듬
- 알고리듬의 복잡도 분석 관련
- 추상 데이타 타입 (Abstract Data Type)
- 되돌기(recursion)와 귀납(induction)원리 - 다음 시간에
- 프로그램 = 데이타 구조 + 알고리듬
-- Niklaus Wirth
(스위스 컴퓨터 과학자.
파스칼, 모듈라, 오베론 등의 프로그래밍 언어 설계)
- 알고리듬
- 명확한 수행 과정 명시
- 반드시 끝나야 함
(끝나기를 원하지 않는 프로그램도 있다: OS, 서버 등)
- 시간복잡도, 공간복잡도 중 시간복잡도를 주로 많이 분석
- 시간복잡도 - 끝날 때까지 얼마나 걸리는지
- 공간복잡도 - 메모리 공간이 얼마나 필요한지
-
알고리듬의 복잡도는 입력의 크기(n)에 대한 함수로 표현
-
O(1) 상수 알고리듬 constant time algorithm
- O(log n) 로그 알고리듬 logarithmic algorithm
- O(n) 선형 알고리듬 linear time algorithm
- 다항식 알고리듬 polynomial algorithm
O(n^k) 임의의 k차 다항식 복잡도
- O(2^n) 지수 알고리듬 exponential algorithm
- 인터페이스(interface)를
구현(implementation)으로부터 분리
- 비유 - 시계, 자동차
- 인터페이스(시침/분침, 핸들/페달)는 그대로
- 예전에는 주로 기계부품으로 구현
- 요즘에는 주로 전자부품으로 구현
- SW유지보수 및 재사용성 향상에 도움 되는 중요한 개념
Made with Slides.com