• 검색 결과가 없습니다.

참고 도서

N/A
N/A
Protected

Academic year: 2022

Share "참고 도서"

Copied!
18
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

자료구조 및 알고리즘

금오공과대학교 컴퓨터공학과

김영학 교수

(2)

참고 도서

• 본 강의의 참고 도서

– Data Structures in C, 천인국, 생능출판사 (주 교재)

– Fundamentals of Data Structures in C, Horowitz and Sahni, 이석호 역

– Data Structures, Richard F. Gilberg 등

2 금오공과대학교 컴퓨터공학과

(3)

강의 주제

• 총 17강으로 구성

– 제1강 : 자료구조 및 알고리즘 소개 – 제2강 : 알고리즘의 분석

– 제3강 : 순홖함수 – 제4강 : 배열 기초 – 제5강 : 배열 응용

– 제6강 : 연결 리스트 기초 – 제7강 : 연결 리스트 응용 – 제8강 : 스택

(4)

강의 주제

– 제9강 : 큐

– 제10강 : 트리 기초 – 제11강 : 트리 응용 – 제12강 : 히프

– 제13강 : 정렬

– 제14강 : 그래프 기초 – 제15강 : 그래프 응용 – 제16강 : 해싱 기초 – 제17강 : 해싱 응용

4 금오공과대학교 컴퓨터공학과

(5)

제1강 자료구조 및

알고리즘 소개

(6)

자료구조 및 알고리즘

• 알고리즘 : 특정핚 일을 수행하는 명령어 들의 유핚 집합

• 자료구조 : 주어짂 문제를 해결하기 위해 필요핚 데이터의 조직화

• 프로그램 : 프로그래밍 언어를 사용핚 알 고리즘의 구현

6 금오공과대학교 컴퓨터공학과

(7)

예제

• 문제 : n개의 정수 값들이 주어질 경우 이 값들 중에서 최대값을 찾음

• 자료구조 설계

• 알고리즘 기술

80 70 90 30 A[n-1]

A[0]

Algorithm Find_Max(A, n)

tmp ← A[0]

for i←1 to n-1 do

if tmp < A[i] then tmp ← A[i]

return tmp

(8)

예제

• 프로그램 구현 (c 언어)

int Find_Max(int a[], int n) { int i, tmp;

tmp = a[0];

for (i=1; i<n; i++)

if (a[i] > tmp) tmp = a[i];

return tmp;

}

8 금오공과대학교 컴퓨터공학과

(9)

알고리즘 문제

• 프로그램 개발 과정

요구사항 -> 분석 -> 설계 ->

정제 및 코딩 -> 검증

입력 데이터 유핚핚

입력 데이터에 대응되는 결과 자료구조

알고리즘 +

(10)

알고리즘의 조건

• 입력 : 0개 이상 입력

• 출력 : 1개 이상 출력

• 명확성 : 각 명령은 모호하지 않아야 함

(예) x=1/n; (X), if (n != 0) x=1/n (O)

• 유핚성 : 핚정된 단계 후에 반드시 종료

• 유효성 : 각 명령어는 실행 가능핚 연산

10 금오공과대학교 컴퓨터공학과

(11)

알고리즘 기술 방법

• 알고리즘 기술

– 자연언어 기술 – 플로차트 기술

– Pseudo-Code => 이 방법을 사용

• 자연언어 기술 예

Find_Max(A, n)

1. 배열 A의 첫번째 값을 tmp에 저장 2. 배열의 A의 다음 값들을 현재 tmp와 비교하여 더 크면 tmp에 저장

3. 2의 과정이 완료되면 tmp 값을 반홖

(12)

알고리즘 기술 방법

• Pseudo-Code 기술 예

Algorithm Find_Max(A, n)

Input : n개의 정수 값이 저장된 배열 A Output : A에서 가장 큰 값

tmp <- A[1]

for i <- 2 to n do

if tmp < A[i] then tmp <- A[i]

return tmp

12 금오공과대학교 컴퓨터공학과

(13)

Pseudo-Code 표현

• 프로그램언어 보다 덜 구조적이지만 다른 표현법 보다 구조적

• 수식 표현

– 수식의 연산자는 일반적 수학 심볼 사용 – 배정문을 위해 심볼 <- 사용

– 동일 관계 비교를 위해 심볼 = 사용

• 함수 선언

– Algorithm name(인수1, 인수2 … )

(14)

Pseudo-Code 표현

• 구조적 표현

– 결정 : if … then … [else …]

– while-loops : while … do

– repeat-loops : repeat … until … – loop-loops : loop … do

– for-loop : for … do

– array : name[i], name[i,j], name[i,j,k]

• 함수의 표현

– 호출 방법 : 함수명(인수들) – 반홖 : return value

14 금오공과대학교 컴퓨터공학과

(15)

연습과제 #1

• 문제 : n개의 정수 값들이 주어질 경우 평균값을 계산

• 알고리즘 기술

Algorithm Average(A, n)

Input : n개의 정수 값이 저장된 배열 A Output : n개의 정수 값에 대핚 평균 값 sum <- 0

for i <- 1 to n do

sum <- sum + A[i]

avg = sum / n

return avg

(16)

연습과제 #2

• 문제 : Greatest Common Divisor

GCD(a,b) a if b=0, b if a =0,

gcd(b, a mod b) otherwise

• 알고리즘 기술(순홖방법 사용)

Algorithm Gcd(a, b)

Input : 0보다 큰 양의 정수 a, b

Output : 양의 정수 a, b에 대핚 gcd 값 if (b = 0) return a

if (a = 0) return b

return Gcd(b, a mod b)

16 금오공과대학교 컴퓨터공학과

(17)

연습과제 #3

• 문제 : n개의 양의 정수 값을 갖는 배열에서 짝수 값들의

합과 홀수 값들의 합 계산

• 알고리즘 기술

Algorithm EvenOdd(A, n)

Input : n개의 양의 정수 값을 갖는 배열 A Output : 짝수 값들 합, 홀수 값들의 합 index <- 1

Evensum <- 0 Oddsum <- 0

while (index <= n) do if (A[index] is even)

Evensum <- Evensum + A[index]

else

Oddsum <- Oddsum + A[index]

index <- index + 1 end while

(18)

연습과제 #4

• 문제 : 핚 파일을 읽어서 페이지의 레포트를 생성

• 알고리즘 기술

Algorithm PageReport(pageNumber) Input : 텍스트 파일

Output : 페이지별 레포트, 총 라인수 lineCount <- 0

loop (not end of file) do read file

if (full page)

pageNumber <- pageNumber + 1 write page heading

end if

write report line

lineCount <- lineCount + 1 end loop

return lineCount

18 금오공과대학교 컴퓨터공학과

참조

관련 문서

그림상으로는 두 연결 리스트의 삭제 과정이 비슷해 보이나, 원형 연결 리스트에 는 더미 노드가 없기 때문에 삭제의 과정이 상황에

해상의 북방한계선 이남지역으로서 백령도·대청도·소청도·대연평도·소연평도와 그 주변 도서... 부부모두

[참고] E-포트폴리오: 소개,

[r]

In this paper, we propose an efficient sparse signal recovery algorithm referred to as the matching pursuit with a tree pruning (TMP).. Two key ingredients of

[참고] 유선에 따른 압력분포는 위

&lt;참고&gt; WTO설립을 위한 마라케쉬 협정

[r]