강사: 주형준([email protected], 010-6317-0101) 전자계산기 일반 4장 자료구조와 알고리즘 자료구조 개요 자료구조란? 컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처 리하느냐와 관련된 방법론을 다루는 분야 선형.
Download ReportTranscript 강사: 주형준([email protected], 010-6317-0101) 전자계산기 일반 4장 자료구조와 알고리즘 자료구조 개요 자료구조란? 컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처 리하느냐와 관련된 방법론을 다루는 분야 선형.
Slide 1
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 2
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 3
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 4
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 5
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 6
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 7
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 8
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 9
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 10
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 11
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 12
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 13
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 14
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 15
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 16
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 17
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 18
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 19
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 20
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 21
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 22
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 23
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 24
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 25
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 26
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 27
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 28
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 29
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 2
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 3
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 4
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 5
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 6
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 7
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 8
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 9
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 10
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 11
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 12
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 13
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 14
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 15
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 16
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 17
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 18
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 19
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 20
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 21
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 22
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 23
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 24
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 25
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 26
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 27
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 28
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29
Slide 29
강사: 주형준([email protected], 010-6317-0101)
전자계산기 일반
4장 자료구조와 알고리즘
자료구조 개요
자료구조란?
컴퓨터 내에 자료를 어떻게 효율적으로 구성시켜 처
리하느냐와 관련된 방법론을 다루는 분야
선형 구조
배열, 리스트, 스택, 큐, …
비선형 구조
트리, 그래프
알고리즘은?
어떤 문제를 해결하는 방법을 다루는 분야
2
자료의 표현
기본 개념
Bit, Byte, Word
진법: 2진법, 8진법, 16진법
수의 표현
고정소숫점 표현, 부동소숫점 표현
문자의 표현
ASCII , Unicode, EBCDIC, BCD
3
배열
배열의 개념
같은 자료형을 갖는 여러 개의 데이터를 하나의 변수
로 묶어놓은 집합체
메모리에 연속적인 기억공간이 필요하다.
1차원 배열
A[l]
A[l+1]
A[l+2]
A[l+3]
…
A[u]
A[l:u] - l:시작 첨자, u:마지막 첨자
4
다차원 배열: 2차원, 3차원, …
2차원 배열: [행,열]
A[l,m]
A[l,m+1]
A[l+1, m]
A[l+1, m+1]
…
…
다차원 배열도 메모리에 1차원으로 기억
행우선 순서 ① ② ③ ④ ⑤ …
열우선 순서 ① ④ ⑦ ② ⑤ …
①
②
③
④
⑤
⑥
⑦
⑧
⑨
5
희소 행렬
희소행렬이란?
행렬에서 0의 값이 상대적으로 많은 행렬
기억공간을 절약해서 표현할 수 있다.
0
20 0
0
9
0
11
0
0
0
0
0
0
0
78 0
0
0
0
0
0
0
0
0
67 0
0
0
0
31
0
0
0
0
0
0
0
91 0
0
41 0
6
리스트
선형 리스트(linear list) 또는 순서 리스트(ordered list)
1개 이상의 원소들이 순서를 가지고 구성되는 것
배열은 대표적인 선형구조이다.
삽입, 삭제 시 전체 원소가 이동된다.
연결 리스트
각 항목(노드)은 인접하지 않아도 된다.
노드는 데이터와 링크로 구성된다.
링크에는 다음 노드의 포인터가 저장되어 있다.
컴퓨터 내부의 저장공간을 효율적으로 사용할 수 있다.
삽입, 삭제가 간단하다.
7
연결리스트 종류
8
스택과 큐, 데크
스택(stack)
LIFO(List-In First-Out, 후입선출)
마지막에 입력된 자료가 가장 먼저 제거되는 자료구
조
한쪽 끝(top)에서 삽입과 삭제가 이루어 지는 구조
연산:
pop: 스택에서 데이터를
제거하는 연산
push: 스택에 데이터를
삽입하는 연산
9
스택
스택의 응용 분야
서브루틴 호출, 인터럽트, 수식 계산, 재귀호출
10
큐
큐(queue)
FIFO(First-In Firtst-Out, 선입선출)
가장 먼저 삽입된 자료가 가장 먼저 제거되는 구조
Rear: 삽입되는 쪽
Front: 삭제되는 쪽
예)
줄을 서서 택시를 기다리는 모습
은행의 업무 처리
운영체제의 작업 스케쥴링
11
데크
데크(dequeue)
스택과 큐를 혼합한 형태
2중 큐(double ended queue)
양쪽 끝 모두에서 삽입과 삭제이 이루어 지는 구조
12
트리
트리
데이터 사이의 관계가 트리 모양을 갖는 구조이다.
비선형 구조에 속한다.
다양한 분야에 활용된다: 삽입, 삭제, 검색(탐색), 정렬, 수
식 표현, …
노드(node)라 불리는 각 항목과 가지(branch)로 구성
최상위의 노드를 루트(root)노드라 부른다.
각 노드에 연결된 가지수를 차수(degree)라 한다.
트리의 차수란 각 노드의 차수중에서 최대 차수이다.
단말 노드(terminal node): 노드의 차수가 0인 노드
부모 노드(parent node), 자식 노드(child node)
조상(ancestor, 선조) 노드, 후손(descendant)
형제 노드(sibling node)
13
트리
레벨(level): 루트노드로부터의 거리
루트의 레벨은 0이다.
트리의 깊이(depth)(또는 높이(height))
가장 긴 경로의 레벨에 1을 더한 값
서브 트리(subtree)
루트노드 아래에 있는 연결된 구조
숲(forest):
루트 노드를 제거해서 얻을 수 있는 트리의 집합
14
트리
15
이진 트리
이진 트리(binary tree)
트리의 차수가 2 이하인 트리
포화 이진 트리(perfect binary tree)
깊이 k인 이진 트리의 최대 노드수가 2k-1을 만족하는 트리
완전 이진 트리(complete binary tree)
레벨 k-1까지는 포화 이진 트리를 형성하고, 레벨 k에서는
왼쪽부터 오른쪽으로 빈자리 없이 채워진 형태의 트리
16
트리의 운행(순회)
전위 순회(preorder)
루트 왼쪽 서브트리 오른쪽 서브트리
중위 순회(inorder)
왼쪽 서브트리 루트오른쪽 서브트리
후위 순회(postorder)
왼쪽 서브트리 오른쪽 서브트리루트
17
18.다음 트리에 대한 INORDER 운행 결과는?
[2011.6.12]
가. A B D C E F 나. D B A E C F
다. D B E C F A 라. A B C D E F
Preorder: ABDCEF
Inorder: DBAECF
Postorder: DBEFCA
18
히프 트리(heap tree)
완전 이진트리이다.
최대값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 크거나 같다.
최소값 히프 트리
각 노드의 값은 그 자식의 노드의 값보다 작거나 같다.
19
그래프
그래프(graph)
그래프 G는 정점(vertex)과 유한집합 V와 쌍을 연결하는 간
선들의 유한집합 E로 구성되며, G=(V,E)
방향 그래프/무방향 그래프
E(G1)={(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)}
E(G2)={<1,2>,<1,3>,<3,2>,<3,4>,<4,1>,<4,2>}
20
그래프의 순회
모든 정점을 체계적으로 방문하는 것
깊이 우선 탐색
시작 정점을 방문한다.
정점1과 인접한 방문하지 않은 정점을 방문한다.
인접한 정점이 없으면, 마지막 정점으로 돌아가서 방문
하지 않는 정점부터 다시 탐색을 수행한다.
스택 이용해서 구현
너비 우선 탐색
방문하지 않은 정점 중에서 가장 오래된 것부터 방문
큐를 이용해서 구현
21
그래프의 순회
깊이 우선 탐색
시작정점 1을 방문 1과 연결된 2,3중 1개를 방문
연결된 정점을 차례로 방문,
인접한 정점이 없으면, 이전에 마지막으로 방문했던
정점으로 돌아가서, 방문하지 않는 정점을 방문,
(stack 사용)
1,2,4,5,7,6,3
너비 우선 탐색
방문하지 않는 정점중에서 가장 오래된 것부터 방문(큐
사용)
1,2,3,4,5,6,7
22
정렬
정렬(sort)
데이터를 일정한 기준에 따라 재배열하는 것
내부 정렬(internal sort)
주기억장치를 이용하는 방법
선택정렬(selection sort), 버블정렬,삽입정렬,퀵정렬,…
외부 정렬(external sort)
보조기억장치를 이용해서 정렬하는 방법
23
선택 정렬
선택 정렬(selection sort)
n-1회 반복(n은 자료 개수)
초기상태
54
34
41
89
67
16
52
23
1회전
16
34
41
89
67
54
52
23
2회전
16
23
41
89
67
54
52
34
3회전
16
23
34
89
67
54
52
41
4회전
16
23
34
41
67
54
52
89
5회전
16
23
34
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
24
버블 정렬(bubble sort)
왼쪽부터 서로 이웃한 두 값을 비교하고, 교환하면서
정렬하는 방식
n-1회전
초기상태
54
34
41
89
67
16
52
23
1회전
34
41
54
67
16
52
23
89
2회전
34
41
54
16
52
23
67
89
3회전
34
41
16
52
23
54
67
89
4회전
34
16
41
23
52
54
67
89
5회전
16
34
23
41
52
54
67
89
6회전
16
23
34
41
52
54
67
89
7회전
16
23
34
41
52
54
67
89
25
탐색
탐색(search, 검색)
주어진 데이터 집합에서 원하는 값을 찾는 작업
순차 검색
처음 데이터부터 순차적으로 검색
최악의 경우, n번 비교
데이터가 많으면 비효율적, 정렬되지 않은 데이터도
검색이 가능
26
탐색(search)
순차검색(sequential search)
맨 처음 데이터부터 하나씩 차례로 비교하면서 검색하다.
이진 검색(binary search)
검색할 데이터가 반드시 크기 순으로 정렬되어 있어야 한
다.
먼저 n/2 위치의 키와 비교, 같지 않으면 이 값과 비교해서
작으면 전반부, 크면 후반부를 같은 방법으로 검색한다.
한 번 검색을 수행할 때마다, 검색할 개수가 ½씩 줄어든다.
27
탐색
(이진 검색의 예) 98을 찾는 경우
5
7
9
15
30
55
98
127
255
②
①
28
해싱(hashing)
키값을 이용해서 데이터의 저장소를 계산해서 탐색하
는 방법
키를 이용해서 데이터 저장주소를 변환하는 함수가
필요 – 해시함수(hash function)
29