PowerPoint 프레젠테이션
|
|
- 민찬 태
- 6 years ago
- Views:
Transcription
1 정렬알고리즘 9 장. 정렬알고리즘 가장많이, 그리고가장잘알려진알고리즘방법과효율빅오기호로분석 학습목표 정렬알고리즘의분류방법을이해한다. 정렬알고리즘별로작동원리에대해이해한다. 정렬알고리즘별로효율분석방법을이해한다. 정렬알고리즘에따라효율을개선하기위한방법을이해한다. 1
2 Section 01 정렬의분류 - 정렬의분류정렬 정렬의대상 = 레코드정렬의기준 = 정렬키 (Sort Key) 필드 오름차순, 내림차순 오름차순 : 키크기가증가하는순 내림차순 : 키크기가감소하는순 [ 그림 9-1] 오름차순, 내림차순 2
3 정렬의분류내부정렬, 외부정렬 내부정렬 정렬대상을한꺼번에메인메모리에올릴수있을때 외부정렬 정렬대상을한꺼번에메인메모리로올릴수없을때 메인메모리와보조메모리사이를들락날락하면서정렬 3
4 정렬의분류안정정렬 (Stable Sorting) 과불안정정렬 (Unstable Sorting) 1차키 : 학점 2차키 : 학년 1차키로정렬하더라도이전의 2차키정렬순서가유지됨 성명 학년 학점 주소지 김용태 1 C 대구 정지희 1 B 서울 유일근 1 A 서울 박하영 3 B 전주 정건호 3 C 인천 김무성 3 A 수원 최석 4 A 용인 [ 표 9-1] 신상정보 성명 학년 학점 주소지 김무성 3 A 수원 최석 4 A 용인 유일근 1 A 서울 박하영 3 B 전주 정지희 1 B 서울 김용태 1 C 대구 정건호 3 C 인천 [ 표 9-2] 불안정정렬 성명 학년 학점 주소지 유일근 1 A 서울 김무성 3 A 수원 최석 4 A 용인 정지희 1 B 서울 박하영 3 B 전주 김용태 1 C 대구 정건호 3 C 인천 [ 표 9-3] 안정정렬 4
5 정렬의분류 직접정렬 (Direct Sorting) 과간접정렬 (Indirect Sorting) 입력 인덱스 레코드김모 90 박모 50 최모 70 [ 표 9-4] 입력레코드 직접정렬 인덱스 레코드박모 50 최모 70 김모 90 [ 표 9-5] 직접정렬 간접정렬 인덱스 인덱스 [ 표 9-6] 인덱스데이터 [ 표 9-7] 간접정렬 5
6 Section 02 선택정렬 - 선택정렬 가장큰것을선택하여가장마지막것과스와핑 [ 그림 9-2] 선택정렬 6
7 코드 9-1: 선택정렬 선택정렬의효율 void Selection(int A[ ], int N) A는배열이름, N은정렬대상레코드수 { for (int Last = N-1; Last >= 1; --Last) 마지막인덱스를왼쪽으로이동하면서 { int Largest = 0; 일단처음것이가장크다고보고 for (int Current=1; Current<=Last; Current++) 처음부터마지막까지 { if (A[Current] > A[Largest]) 현재것이더크면 Largest = Current; 현재인덱스를가장큰레코드의인덱스로 } int Temp = A[Last]; 이동을위해마지막레코드를잠시저장 A[Last] = A[Largest]; 가장큰레코드를마지막으로이동 A[Largest] = Temp; 마지막것을가장큰레코드위치로이동 } } if 문 : (N-1) + (N-2) = (N-1)N/2 번실행, 비교와할당으로구성기타할당문 : 4(N-1) 효율 : 2(N-1)N/2 + 4(N-1) = N 2 + 3N - 4 = O(N 2 ) 대략적분석 : 왼쪽위의삼각형면적이비교의횟수임. O(N 2 /2) = O(N 2 ) 7
8 이중선택정렬한번의스캔에최대치와최소치를동시에발견하고스와핑 MinMax Sorting O(N 2 /2) = O(N 2 ) 단계의수가반으로감소계수를줄이는노력 단계결과 단계결과 단계결과 단계결과 [ 표 9-8] 이중선택정렬 8
9 Section 03 버블정렬 - 버블정렬 버블정렬 9
10 버블정렬 가장큰레코드가한칸씩오른쪽끝으로떠올라오는정렬 한쌍씩비교하되이전쌍의둘째레코드가다음쌍의첫레코드가되게중복 [ 그림 9-4] 버블정렬 10
11 단계수 데이터 N 개라면버블정렬의단계수는대략 N. 어떤단계에서스와핑이한번도일어나지않았다면 ( 이어지는한쌍끼리모두 ) 정렬완료된것임. 코드 9-2: 버블정렬 void Bubble(int A[ ], int N) A 는배열이름, N 은정렬대상레코드수 { bool Sorted = FALSE; 스와핑이전혀없는단계에서빠져나가기위한변수 for (int Pass = 1; (Pass < N) && (!Sorted); ++Pass) { Sorted = TRUE; 스와핑이전혀없다고초기화 for (int Current=0; Current<N-Pass; ++Current) { if A[Current] > A[Current+1] 현재것이다음것보다크면 { int Temp = A[Current]; 스왑 A[Current] = A[Current+1]; ] A[Current+1] = Temp; Sorted = FALSE; 스왑이한번이라도일어나면다음단계로 안쪽루프내부의명령은 (N-1) + (N-2) = (N-1)N/2 번수행. 루프내부의비교문은 (N-1)N/2 번. 할당문각각이 (N-1)N/2 번. 최종효율 (N-1)N/2 + 2(N-1)N = O(N 2 ) 버블정렬 11
12 버블정렬, 선택정렬단계 단계별로가장큰것이가장오른쪽으로이동한다는점에서동일선택정렬은가장큰것과가장오른쪽것이한번에스와핑. 버블정렬은가장큰것이한칸씩오른쪽으로이동 스와핑 ( 교환, 복사 ) 에걸리는시간 큰레코드에대해서버블정렬은선택정렬보다불리 이미정렬된데이터 버블정렬이최선의효율 1단계에서끝남. ( 스와핑이전혀없음 ). O(N) 의효율선택정렬은여전히 O(N 2 ) 의효율. 가장큰데이터인마지막데이터가자기자신과스왑 (Self Swap) 12
13 Section 04 삽입정렬 - 삽입정렬왼쪽정렬된그룹을점차키워간다. 1 단계 : 가장왼쪽첫레코드하나만주목. 그자체로정렬 2 단계 : 다음레코드를왼쪽것과비교. 37은 22보다크므로그대로둠. 3 단계 : 15는 37의왼쪽으로가야한다. 풀스왑 : 삽입할레코드가계속적으로왼쪽으로옮김 하프스왑 : 삽입될레코드는단한번만움직임 [ 그림 9-5] 삽입정렬 13
14 코드 9-3: 삽입정렬 void Insertion(int A[ ], int N) { for (int Pick=1; Pick<N; ++Pick) 왼쪽부터카드를하나씩집어내면서 { int Current = Pick; 집어낸카드의인덱스를현재인덱스로 } } 삽입정렬의효율 for (; (Current > 0) && (A[Current-1]>A[Pick]); --Current) A[Current] = A[Current-1]; 집어낸카드보다크면오른쪽으로이동 A[Current] = A[Pick]; 집어낸카드를제위치에삽입 ( 하프스왑 ) 효율안쪽루프명령문은 (N-1) = (N-1)N/2 번실행 for 문자체에비교 2 번, 할당 1 번, for 문내부에할당이 1 번총 4(N-1)N/2 = 2(N-1)N = O(N 2 ) 이미정렬된데이터에대해삽입정렬은최선의효율이미정렬된기존사원 2000 명, 신입사원 10 명. 신입사원파일을기존사원파일에붙인이후삽입정렬. 2, 000 명은이미정렬되어있으므로 O(N) 신입사원은최악의경우배열의맨앞까지가면서비교와스왑. 이작업은 10 명에불과하므로 10N 의시간. 따라서전체적인효율은 O(N) + O(10N) = O(N) 14
15 선택, 버블, 삽입 최악의효율은모두 O(N 2 ) 으로서동일 버블정렬과삽입정렬는안정정렬 레코드들이하나하나순차적으로이동 (Shift) 하기때문에원래의순서가유지 선택정렬은불안정정렬 스왑 (Swap) 에의해단번에멀리떨어진곳으로 선택정렬 버블정렬 삽입정렬 효율 O(N 2 ) O(N 2 ) O(N 2 ) 안정정렬 No Yes Yes [ 표 9-9] 기본정렬방식의효율 15
16 Section 05 셀정렬 - 셸정렬 셀정렬 [ 그림 9-6] 삽입정렬과셸정렬 16
17 삽입정렬을개선. 한칸씩이동하는하는대신한번에여러칸이동 4- 정렬의예 셸정렬 [ 그림 9-7] 4- 정렬 일련의 h- 정렬 최종적으로는 1- 정렬. 효율은 O(N 3/2 ). 삽입정렬의 O(N 2 ) 보다는빠르지만 O(NlogN) 보다는느린효율 [ 그림 9-8] h- 정렬의필요성 17
18 Section 06 합병정렬 - 합병 합병 18
19 합병 정렬된그룹의합병 19
20 합병함수 코드 9-4: 합병함수 void Merge(dataType A[ ], int F, int Mid, int L) F, Mid, L은그룹분리를위한인덱스 { datatype Temp[MAX]; datatype의배열데이터를가정 int First1 = F; int Last1 = Mid; F부터 Mid까지가첫그룹 int First2 = Mid + 1; int Last2 = L; (Mid+1) 부터 L까지가둘째그룹 int Index = First1; for (; (First1 <= Last1) && (First2 <= Last2); ++Index) 그룹인덱스가밖으로안나갈동안 { if (A[First1] < A[First2]) 첫그룹의데이터가작으면 { Temp[Index] = A[First1]; 임시저장공간에복사 ++First1; 포인터를이동 } else 둘째그룹의데이터가작거나같으면 { Temp[Index] = A[First2]; 임시저장공간에복사 ++First2; 포인터를이동 } } for (; First1 <= Last1; ++First1, ++Index) 첫그룹에남은데이터가있으면 Temp[Index] = A[First1]; 순서대로임시저장공간에복사 for (; First2 <= Last2; ++First2, ++Index) 둘째그룹에남은데이터가있으면 Temp[Index] = A[First2]; 순서대로임시저장공간에복사 for (Index = F; Index <= L; ++Index) 임시저장공간의데이터를 A[Index] = Temp[Index]; 원래배열로복사시킴 } 20
21 합병정렬메인함수코드 9-5: 합병정렬의메인함수 void MergeSort(int A[ ], int First, int Last) { if (First < Last) { int Middle = (First + Last) / 2; MergeSort(A, First, Middle); MergeSort(A, Middle+1, Last); Merge(A, First, Middle, Last); } } 합병정렬 반잘라서왼쪽재귀호출, 오른쪽재귀호출. 결과를합병 베이스케이스로부터빠져나와호출함수로되돌아오는과정에서 Merge(A, First, Middle, Last) 즉, 합병에의해정렬 21
22 합병정렬들어가고나오기 합병정렬들어가고나오기 [ 그림 9-11] 합병정렬의실행과정 22
23 합병정렬의효율 효율 O(NlgN) 호출의단계수가 lgn 각단계별로합병에 O(N) [ 그림 9-11] 합병정렬의실행과정 23
24 효율 삽입정렬과합병정렬 O(N 2 ) 대 O(NlgN) 좋은알고리즘은슈퍼컴퓨터보다낫다. 삽입정렬 컴퓨터 N=10 3 N=10 6 N=10 9 PC 순간적 2.8 시간 317 년 수퍼컴퓨터순간적 1 초 1.7 주 [ 표 9-10] 삽입정렬 (O(N2)) 합병정렬 컴퓨터 N=10 3 N=10 6 N=10 9 PC 순간적 1초 18분 수퍼컴퓨터순간적 순간적 순간적 [ 표 9-11] 합병정렬 (O(NlgN)) 24
25 Section 07 쾌속정렬 - 쾌속 쾌속 25
26 쾌속정렬합병정렬과쾌속정렬 재귀호출의순서에유의실제정렬작업이어디서일어나는지유의 MergeSort { MergeSort (Left); MergeSort (Right); Merge; } QuickSort { Partition; QuickSort(Left); QuickSort(Right); } [ 표 9-12] 합병정렬과쾌속정렬비교 26
27 쾌속정렬 코드 9-6: 파티션함수 int partition(int A[ ], int first, int last) { int low, high, pivotindex, p; p = A[last]; 마지막요소를피벗으로 low = first; 업포인터를처음으로 high = last-1; 다운포인터를마지막직전요소로 while (low < high) 크로스오버가없을때까지 { while (p > A[low]) low++; 피벗보다크거나같은것찾기 while (p < A[high]) high--; 피벗보다작거나같은것찾기 if (low < high) 크로스오버가아니면 Swap(A, low, high); 작은것과큰것을스왑 } Swap(A[low], A[last]); 업포인터레코드와피벗레코드를스왑 return (low); 피벗인덱스를리턴 } 27
28 코드 9-7: 쾌속정렬의메인함수 쾌속정렬메인함수 void QuickSort(int A[ ], int First, int Last) { if (First < Last) { int PivotIndex = Partition(A, First, Last); QuickSort(A, First, PivotIndex-1); QuickSort(A, PivotIndex+1, Last); } } [ 그림 9-14] 쾌속정렬 28
29 효율 쾌속정렬 단계의수에따라결정단계의수는파티션결과좌우정확히양분되면 lgn 균형 (Balancing) 이좋을때효율은 O(NlgN0 정렬된데이터에최악의효율파티션결과하나씩만나가떨어진단계의수는거의 N [ 그림 9-15] 정렬된데이터 29
30 쾌속정렬의균형 파티션방법더나은균형을위하여같은키에서도스와핑 피벗의선택 ( 세개중메디안 파티션 ) 처음세개, 마지막세개, 처음, 마지막, 중간것랜덤함수에의한추출어느경우든선택을위한시간이소요됨. 시스템정렬샘플정렬 램덤하게여러샘플추출, 정렬, 그중중간값을피벗으로벤틀리매클로이방식 한번에 3 개의샘플을사용하여메디안을구함 3 번반복하여 3 개의메디안을구한뒤, 그중의메디안값을피벗으로 파티션의최종단계예를들어데이터 10 개이하직접삽입정렬에의해정렬재귀호출에따른활성화레코드생성, 복원에따르는시간배제 30
31 합병정렬, 쾌속정렬효율비교 합병정렬은매단계마다완벽한균형합병정렬은최악의경우에도 O(NlgN) 을보장쾌속정렬은최악의경우 O(N 2 ) 쾌속정렬은임시저장공간이불필요한제자리연산 (In-Place Computation) 합병정렬은임시저장공간에옮겨가고옮겨오는시간이필요평균적으로는쾌속정렬이빠름 31
32 정렬방식비교 합병정렬 쾌속정렬 N=10 3 N=10 6 N=10 9 PC 순간적 1초 18분 수퍼컴 순간적 순간적 순간적 N=10 3 N=10 6 N=10 9 PC 순간적 0.3초 6분 수퍼컴 순간적 순간적 순간적 [ 표 9-13] 합병정렬 (O(NlgN)) [ 표 9-14] 쾌속정렬 (O(NlgN)) 삽입, 쾌속, 합병 [ 표 9-15] 정렬방식의비교 삽입정렬 쾌속정렬 합병정렬 최악의효율 N 2 N 2 NlgN 최선의효율 N NlgN NlgN 평균적효율 N 2 NlgN NlgN 이미정렬된데이터 N N 2 NlgN 반대로정렬된데이터 N 2 N 2 NlgN 공간 N N 2N 안정정렬 Yes No YES 32
33 Section 08 외부정렬- 외부정렬기본적으로합병정렬 1 단계 : 입력파일 : D A T A S T R U C T U R E A N D A L G O R I T H M 메인메모리용량이세개단위로읽어들여정렬가능하다고가정 파일 1: ADT * RTU * GOR * 파일 2: AST * AEN * HIT * 파일 3: CRU * ADL * M * 2 단계 : (3 개씩합병 ) 파일 4: AACDRSTTU * 파일 5: AADELNRTU * 파일 6: GHIMORT * 3 단계 : (3 개씩합병 ) 파일 1: AAAACDDEGHILMNORRSTTTTUU * 33
34 외부정렬 1 단계 : 파일 1: ADT * RTU * GOR * 파일 2: AST * AEN * HIT * 파일 3: CRU * ADL * M * 2 단계 : (2 개씩합병 ) 파일 4: AADSTT * AADELN * M 파일 5: CRRTUU * GHIORT * 3 단계 : (2 개씩합병 ) 파일 1: AACDRRSTTTUU * M 파일 2: AADEGHILNORT * 4 단계 :(2 개씩합병 ) 파일 3: AAAACDDEGHILNORRSTTTTUU * 파일 4: M 5 단계 (2 개씩합병 ) 파일 1: AAAACDDEGHILMNORRSTTTTUU * 34
35 합병 외부정렬 모든블록이합병에참가하기만하면합병의순서는관계없음 효율 CPU 연산시간 << 입출력시간외부정렬의효율은입출력시간에좌우됨몇단계에걸쳐파일출력이일어나는가가관건 1 단계실행결과정렬된블록의개수는 N/M 개 p 개단위의합병 합병한번에블록의개수는 1/p 씩줄어듬 따라서정렬의효율은대략 log p (N/M) 35
36 Section 09 최선의정렬효율 - 최선의정렬효율 버블정렬의결정트리 3 개의키이므로크기순서의조합은 3! = 6 불필요한비교를감안하면일반적으로리프노드의수는 N! 개이상 [ 그림 9-16] 버블정렬의결정트리 트리의높이는최소한 log 2 (N!) 보다크고최소비교의회수는 log 2 (N!). 스털링 (Stirling) 의공식 : log 2 (N!) log 2 (N/e)N = Nlog 2 N - Nlog2e. 따라서정렬에서가능한최소비교회수는 Nlog 2 N 36
37 Section 10 버켓정렬과셈정렬 - 버켓정렬 버켓정렬 37
38 방법 버켓정렬 키자체를배열인덱스로하여별도배열로옮김효율 O(N). 키비교에의한정렬이아니므로 O(NlgN) 을능가할수있음단점버켓배열의인덱스보다큰키가들어올수없음버켓의크기를최대인덱스크기로설정. 메모리공간낭비가능성이를개선한것이셈정렬 [ 그림 9-18] 버켓정렬 38
39 셈정렬 분포세기 (Distribution Counting) 또는셈정렬 (Count Sorting) 중복키허용키빈도를 Count[ ] 배열에넣음. Count[1]= 4, Count[2] = 2, Count[3] = 1 누계를구하면 Count[1] = 4, Count[2] = = 6, Count[3] = = 7 오른쪽에서왼쪽으로스캔해가면서버켓에삽입삽입위치는현재의카운트값. 삽입직후에는카운트값을하나씩줄임 [ 그림 9-19] 셈정렬 효율 O(N) 로서안정정렬 39
40 Section 11 기수정렬 - 기수정렬 기수 = 키의구성요소. 분해된문자열, 분해된문자 [ 그림 9-20] 문자열키의분해 40
41 기수정렬기수정렬 Radix = 뿌리문자열키의뿌리는문자. 문자의뿌리는비트문자열단위로비교하는대신문자열을잘라서문자단위로비교 기수 8비트 ASCII 코드라면 256가지레이딕스 16비트유니코드 (Unicode) 라면 65,536 가지의레이딕스숫자를문자열로간주하면숫자키에대해서도기수정렬을가할수있음. 41
42 LSD LSD 기수정렬 문자열오른쪽 (Least Significant Digit ) 에서왼쪽으로 제대로동작하는이유는안정성때문. 왼쪽키가같다면오른쪽키는이전에정렬된순서를유지함 문자단위의정렬은셈정렬을사용 문자열길이 W 일때, 효율은 O(WN) 0 a d d 0 c a b 0 c a b 0 a c e 1 c a b 1 a d d 1 b a d 1 a d d 2 f e e 2 b a d 2 d a d 2 b a d 3 b a d 3 d a d 3 a c e 3 b e d 4 d a d 4 b e d 4 a d d 4 b e e 5 b e e 5 f e e 5 b e d 5 c a b 6 b e d 6 b e e 6 f e e 6 d a d 7 a c e 7 a c e 7 b e e 7 f e e [ 그림 9-21] A [ 그림 9-22] B [ 그림 9-23] C [ 그림 9-24] D 42
43 LSD 기수정렬 단점최종단계의정렬이이루어지기전까지는조금이라도정렬된흔적이없음가변길이키에적용하기어려움. cold 와 old 라는키에이방식을가하면뒤에서부터올라오므로마지막첫자리에서 cold 의 c 와비교되어야하는것이 old 에는없으므로아무것도없음을표시하는널문자 (Null Character) 와비교. ASCII 코드표에의하면 c 는십진수 99, 널문자는십진수 0 이므로 old, cold 순의오름차순이된다. 이는잘못된정렬마지막부근의자릿수정렬에많은시간을허비. 만약키가 Kim Pak Cho Rho 등이라면사실은첫자리만보고도정렬이가능한것이다. 패딩 cold, old, at 를비교하자면 cold, old0, at00 등으로마지막에 0 을보충 0 은아스키값십진수 47 로서문자보다는그값이작음숫자를문자열로취급할경우에는거꾸로처음에 0 을넣어서비교 1611, 315, 17 을비교하자면 1611, 0315, 0017 로비교패딩은번거로운작업으로서키의최대길이를찾아내는시간, 패딩하는시간을요한다. 43
44 MSD 기수정렬 MSD 왼쪽 (MSD: Most Significant Digit) 에서오른쪽으로진행셈정렬 (Distribution Counting) 을사용. O(WN) = O(N) 이전의모든문자가일치하는것들만다음문자를비교앞부분이유일 (Uniqueness) 해지면더이상비교대상에서제외 0 a d d 0 a d d 0 a c e 0 a c e 1 c a b 1 a c e 1 a d d 1 a d d 2 f e e 2 b a d 2 b a d 2 b a d 3 b a d 3 b e e 3 b e e 3 b e d 4 d a d 4 b e d 4 b e d 4 b e e 5 b e e 5 c a b 5 c a b 5 c a b 6 b e d 6 d a d 6 d a d 6 d a d 7 a c e 7 f e e 7 f e e 7 f e e [ 그림 9-25] D [ 그림 9-26] E [ 그림 9-27] F [ 그림 9-28] G 44
45 기수교환정렬 기수교환정렬 문자단위의정렬에셈정렬대신쾌속정렬사용 별도메모리대신스와핑사용 3-way 파티션 피벗 b 와일치하지않는키 (add, ace 그룹, dad, fee, cab 그룹 ) 는다시첫문자를기분으로재귀적으로정렬해야함. 피벗 b 와일치하는키 (bed, bad, bee) 는두번째문자를대상으로정렬을진행 0 a d d 1 c a b 2 f e e 3 b a d 4 d a d 5 b e e 6 b e d 7 a c e [ 그림 9-29] H 0 a d d 1 a c e 2 b e d 3 b a d 4 b e e 5 d a d 6 f e e 7 c a b [ 그림 9-30] I 45
46 비트단위의기수교환정렬파티션 파티션결과 0인그룹과 1인그룹으로양분첫문자에재귀적으로파티션할필요가없음비트단위의쾌속정렬비트열이유일 (Uniqueness) 해지면더이상비교대상에서제외시킴 [ 그림 9-31] 비트단위의기수교환정렬 46
47 유일한비트열 비트단위의기수교환정렬 파티션이가해질때마다 N 개의비트값이비교데이터 N 개라면대략적으로 log 2 N 비트만에모든비트열이유일해짐. 기수교환정렬의효율은 O(Nlog 2 N) 통계적분석 효율 통계적으로볼때, 어떤자리수가 0 일확률과 1 일확률이 1/2 로서동일비트단위의파티션을가하면데이터의반이 0 그룹, 나머지반이 1 그룹균형적파티션이므로단계의수는쾌속정렬에서지속적으로균형적인파티션이일어날때의단계수인 log 2 N 과동일균형이일어날확률이높음으로인해쾌속정렬보다 O(Nlog 2 N) 에근접 소요되는시간면에서비트단위의기수교환정렬은쾌속정렬과큰차이기수교환정렬에서 O(Nlog 2 N) 이라고할때에는비트단위의비교회수쾌속정렬에서 O(Nlog 2 N) 라고할때에는문자열단위의비교회수 47
48 Thank you 48
쉽게 배우는 알고리즘 강의노트
쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,
More information슬라이드 1
CHAP 9: 정렬 정렬이란? 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수 ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬의단위 레코드 정렬의대상 학생들의레코드 이름학번주소연락처 레코드 필드필드필드필드 키 (key) 정렬알고리즘의개요 많은정렬알고리즘존재 단순하지만비효율적인방법
More information06_sorting
정렬 Data Structures and Algorithms 목차 버블정렬 선택정렬 삽입정렬 힙정렬 병합정렬 퀵정렬 기수정렬 Data Structures and Algorithms 2 버블정렬 Data Structures and Algorithms 3 버블정렬 Data Structures and Algorithms 4 버블정렬 Data Structures and
More informationCh.8 Procedures and Environments
Chapter 9 정렬 (sorting) SANGJI University Kwangman KO (kkman@sangji.ac.kr) 정렬 (sorting) 이란? 정의 물건을크기순으로오름차순이나내림차순으로나열하는것 컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수적. ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬알고리즘의개요
More informationAlgorithms
자료구조 & 알고리즘 정렬과탐색알고리즘 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 기초적인정렬알고리즘 고급정렬알고리즘 탐색알고리즘 2 정 렬 (Sort) 정렬 (sort) 의개념 순서없이배열되어있는자료들을재배열하는것 정렬의대상 : 레코드 정렬의기준 : 정렬키 (sort key) 필드 정렬방법의분류
More information-09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고, 선형시간정렬이가능한조건과선형시간정렬알고리즘을이해한다. - - 한빛미디어 Sortng Algorth
-09- 쉽게배우는알고리즘 장. 정렬 Sortng http://academy.hanb.co.kr 장. 정렬 Sortng 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 한빛미디어 1 -09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다.
More informationPowerPoint 프레젠테이션
대표적인분할정복알고리즘 4 장. 재귀호출 학습목표 재귀호출이라는개념자체를명확히이해한다. 재귀호출함수의내부구조를이해한다. 재귀호출에내재하는효율성에대해이해한다. 1 Section 01 상징적의미 - 도미노 도미노 2 도미노 100 번째것이반드시쓰러진다는사실을증명하라. 수학적귀납법 (Mathematical Induction) 처음것 (K=1) 은반드시쓰러진다. K
More informationMicrosoft PowerPoint - 5장 정렬
01. 버블 02. 삽입 03. 퀵 04. C 표준 라이브러리의 퀵 정렬 정렬 정렬 정렬 함수 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수적이다. ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬은왜하는가? 학생들의레코드 이름학번주소연락처 레코드 필드 필드 필드 필드
More information정렬 강의자료
CHAP 9 : 정렬 정렬이란? 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학을포함한모든과학기술분야에서가장기본적이고중요한알고리즘중하나 정렬은자료탐색에있어서필수적 ( 예 ) 만약영어사전에서단어들이알파벳순으로정렬되어있지않다면? 정렬의대상 일반적으로정렬시켜야될대상은레코드 (record) 레코드는다시필드 (field) 라는보다작은단위로구성 학생들의레코드
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationMicrosoft PowerPoint - 알고리즘_5주차_1차시.pptx
Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1
More information정보
정보 Sangwook Lee Deogi High School III 문제해결과프로그래밍 1 추상화 2 알고리즘 3 프로그래밍 2 알고리즘 2-1 알고리즘설계 2-2 알고리즘분석 3 2-1 알고리즘설계 (p.108) 학습목표 순차, 선택, 반복구조의흐름을설명할수있다. 다양한제어구조를활용하여논리적이고효율적인알고리즘을설계할수있다. 4 [1] 알고리즘제어구조 (p.109)
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information2002년 2학기 자료구조
자료구조 (Data Structures) Chapter 1 Basic Concepts Overview : Data (1) Data vs Information (2) Data Linear list( 선형리스트 ) - Sequential list : - Linked list : Nonlinear list( 비선형리스트 ) - Tree : - Graph : (3)
More information6장정렬알고리즘.key
6 : :. (Internal sort) (External sort) (main memory). :,,.. 6.1 (Bubbble Sort).,,. 1 (pass). 1 pass, 1. (, ), 90 (, ). 2 40-50 50-90, 50 10. 50 90. 40 50 10 비교 40 50 10 비교 40 50 10 40 10 50 40 10 50 90
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More informationchap x: G입력
재귀알고리즘 (Recursive Algorithms) 재귀알고리즘의특징 문제자체가재귀적일경우적합 ( 예 : 피보나치수열 ) 이해하기가용이하나, 비효율적일수있음 재귀알고리즘을작성하는방법 재귀호출을종료하는경계조건을설정 각단계마다경계조건에접근하도록알고리즘의재귀호출 재귀알고리즘의두가지예 이진검색 순열 (Permutations) 1 장. 기본개념 (Page 19) 이진검색의재귀알고리즘
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationMicrosoft PowerPoint - ch11_정렬 [호환 모드]
정렬 자바로배우는쉬운자료구조 이장에서다룰내용 1 정렬 6 셸정렬 2 선택정렬 7 병합정렬 3 버블정렬 8 기수정렬 4 퀵정렬 9 힙정렬 5 삽입정렬 10 트리정렬 2 정렬 (1) 정렬 (sort) 2 개이상의자료를작은것부터큰순서 ( 오름차순, ascending) 로정렬또는큰것부터작은것순서 ( 내림차순, descending) 로재배열하는것 키 : 자료를정렬하는데사용하는기준값
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information슬라이드 1
CHAP 8: 우선순위큐 yicho@gachon.ac.kr 1 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터
More information슬라이드 1
CHAP 6: 큐 yicho@gachon.ac.kr 1 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 2 큐 ADT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More informationChapter 4. LISTS
6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립
More information03_queue
Queue Data Structures and Algorithms 목차 큐의이해와 ADT 정의 큐의배열기반구현 큐의연결리스트기반구현 큐의활용 덱 (Deque) 의이해와구현 Data Structures and Algorithms 2 큐의이해와 ADT 정의 Data Structures and Algorithms 3 큐 (Stack) 의이해와 ADT 정의 큐는 LIFO(Last-in,
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationadfasdfasfdasfasfadf
C 4.5 Source code Pt.3 ISL / 강한솔 2019-04-10 Index Tree structure Build.h Tree.h St-thresh.h 2 Tree structure *Concpets : Node, Branch, Leaf, Subtree, Attribute, Attribute Value, Class Play, Don't Play.
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C4C656D70656C2D5A69762E637070>
/* */ /* LZWIN.C : Lempel-Ziv compression using Sliding Window */ /* */ #include "stdafx.h" #include "Lempel-Ziv.h" 1 /* 큐를초기화 */ void LZ::init_queue(void) front = rear = 0; /* 큐가꽉찼으면 1 을되돌림 */ int LZ::queue_full(void)
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More information18강.hwp
------------------8강 데이터 관리------------------ **주요 키워드 ** () 레코드관리 () 정렬 () 자동필터, 고급필터 () 그룹과 윤곽설정, 텍스트나누기, 외부데이터 () 레코드관리********************************** [08/]. 다음 중 [데이터]-[레코드 관리]에 대한 설명으로 옳지 않은 것
More informationMicrosoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600
균형이진탐색트리 -VL Tree delson, Velskii, Landis에의해 1962년에제안됨 VL trees are balanced n VL Tree is a binary search tree such that for every internal node v of T, the heights of the children of v can differ by at
More information0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4
Introduction to software design 2012-1 Final 2012.06.13 16:00-18:00 Student ID: Name: - 1 - 0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x
More information슬라이드 1
Data Structure Chapter 8. 우선순위큐 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 우선순위큐추상데이터타입 우선순위큐 우선순위큐 (priority queue) 정의 : 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게됨 스택이나 FIFO 큐를우선순위큐로구현할수있음
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>
#include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0
More information슬라이드 1
Data Structure Chapter 1. 자료구조와알고리즘 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 자료구조와알고리즘 일상생활에서의사물의조직화 해야할일리스트 조직도 일상생활에서의사물의조직화 사전 Ticket Box 3 일상생활과자료구조의비교 일상생활 vs 자료구조 자료구조 스택 큐 리스트 사전, 탐색구조
More information(실제 구현은 더욱 단순하다). 다음은 배열의 길이 n과 간격비 K의 서로 다른 셋팅에 대한 셸 정렬의 진행 순서에 대한 예이다. 1. n = 150, K = 3인 경우, Eq. (2)에 따라 m = 5이다. 즉, 셀 정렬은 총 5 단계를 거치며 (m = 5), 121
Data structure: Assignment 2 Seung-Hoon Na November 23, 2018 1 Assignment 2 1.1 셸 정렬 (shell sort) 본 절에서는 셸 정렬을 구현하는 것을 목표로 한다. 셸 정렬 (shell sort)는 삽입 정렬(insertion sort)을 개선한 것으로, 한칸씩 원소 교환을 하는 것이 아니라, 여러
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More information비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2
비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information슬라이드 1
CHAP 7: 트리 C 로쉽게풀어쓴자료구조 생능출판사 2005 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 대표이사 응용분야 : 계층적인조직표현 총무부 영업부 생산부 파일시스템 인공지능에서의결정트리 전산팀구매팀경리팀생산 1 팀생산 2 팀 트리의용어 노드 (node): 트리의구성요소 루트 (root): 부모가없는노드
More information슬라이드 1
CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템 ( 여기서의우선순위는대개사건의시각이다.)
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 5 강. 배열, 포인터, 참조목차 배열 포인터 C++ 메모리구조 주소연산자 포인터 포인터연산 배열과포인터 메모리동적할당 문자열 참조 1 /20 5 강. 배열, 포인터, 참조배열 배열 같은타입의변수여러개를하나의변수명으로처리 int Ary[10]; 총 10 개의변수 : Ary[0]~Ary[9]
More information슬라이드 1
Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More information슬라이드 1
6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,
More information<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>
2006 년 2 학기윈도우게임프로그래밍 제 8 강프레임속도의조절 이대현 한국산업기술대학교 오늘의학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용한다. FPS(Frame Per Sec)
More informationMicrosoft PowerPoint - chap06-1Array.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어
More informationPowerPoint Presentation
자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More information슬라이드 1
CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 우선순위큐 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More information<4D F736F F F696E74202D20C1A63034B0AD202D20C7C1B7B9C0D3B8AEBDBAB3CABFCD20B9ABB9F6C6DBC0D4B7C2>
게임엔진 제 4 강프레임리스너와 OIS 입력시스템 이대현교수 한국산업기술대학교게임공학과 학습내용 프레임리스너의개념 프레임리스너를이용한엔터티의이동 OIS 입력시스템을이용한키보드입력의처리 게임루프 Initialization Game Logic Drawing N Exit? Y Finish 실제게임루프 오우거엔진의메인렌더링루프 Root::startRendering()
More information<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include "QuickSort.h" 7 using namespace std; 8 9 10 Node* Queue[100]; // 추가입력된데이터를저장하기위한 Queue
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information문서의 제목 나눔명조R, 40pt
이문서는나눔글꼴로작성되었습니다. 설치하기 11차시 : 함수동적메모리할당다차원배열 프로그래밍및실험 제 11주 동국대학교조영석 6.6 함수인자로써의배열 - 함수정의에서배열로선언된형식매개변수는 pointer임. - 함수의인자로배열이전달되면배열의기본주소가 ( 배열의내용이아님 ) call-by-value로전달됨. - 배열원소는복사되지않음. 2 ( 예 ) #include
More information다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 4 장 JOIN 을배웁니다 1 2 1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname
More information<4D F736F F F696E74202D203728B0E8BBEABAB9C0E2B5B5B0B3B7D02DC1A4B7C4B9AEC1A6292E BC8A3C8AF20B8F0B5E55D>
계산복잡도 Computatioal Complexity 계산복잡도개론정렬문제 알고리즘의분석 어떤특정알고리즘의효율 (efficiecy 을측정 시간복잡도 (time complexity 공간복잡도 (space/memory complexity 문제의분석 일반적으로 계산복잡도분석 이란이를지칭 어떤문제에대해서그문제를풀수있는모든알고리즘의효율의하한 (lower-bou 을결정한다.
More information리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : ( ㄱ, ㄴ
00. 리스트 자료구조 01. 링크드 리스트 02. 더블 링크드 리스트 03. 환형 링크드 리스트 리스트 (list), 선형리스트 (linear list): 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 L = n ( item0, item1,..., item -1) l 리스트의예 l 요일 : ( 일요일, 월요일,, 토요일 ) l 한글자음의모임 : (
More informationchap01_time_complexity.key
1 : (resource),,, 2 (time complexity),,, (worst-case analysis) (average-case analysis) 3 (Asymptotic) n growth rate Θ-, Ο- ( ) 4 : n data, n/2. int sample( int data[], int n ) { int k = n/2 ; return data[k]
More information정렬문제란크기비교가가능한데이터의시퀀스를오름또는내림차순으로재배치하는문제를말한다. 즉, 다음의정수리스트를오름차순으로정렬하면, [4,2,3,1,6,8,3,2,6,7] 다음과같이된다. [1,2,2,3,3,4,6,6,7,8] 이장에서는정수리스트를오름차순으로정렬하는함수를다양한알고
CSE117 프로그래밍기초강의노트 1 10 프로그램디자인사례 : 정렬 Program Design Case Study: Sorting 한양대학교 ERICA캠퍼스컴퓨터공학과도경구 2013년 2학기 (version 0.8) 1 c 도경구 (2013). 본문서는한양대학교 ERICA 캠퍼스컴퓨터공학과프로그래밍기초강의용으로제 작되었습니다. 강의이외의용도로저자의허락없이무단복제하여배포할수없습니다.
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More informationPowerPoint 프레젠테이션
Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationMicrosoft PowerPoint - chap05-제어문.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.
More information06장.리스트
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 리스트 1/28 리스트란? 리스트 (list), 선형리스트 (linear list) 순서를가진항목들의모임 집합 : 항목간의순서의개념이없음 리스트의예 요일 : ( 일요일, 월요일,, 토요일 ) 한글자음의모임 : ( ㄱ, ㄴ,, ㅎ ) 카드 :
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationMicrosoft PowerPoint - ch06 - 배열, 동적배열, 정렬 pm0200
동적배열 배열을위한메모리할당방법 지역변수로자동할당 int score[100]; score[10] = 123; 지역변수로배열을생성하는경우, 크기에제한이있음 동적배열 동적메모리할당 int *score; score = (int *) malloc(100*sizeof(int)); score[10] = 123; 동적메모리할당으로배열을생성하는경우, 더큰배열을사용할수있음
More information슬라이드 1
2007 년 2 학기윈도우게임프로그래밍 제 7 강프레임속도의조절 이대현 핚국산업기술대학교 학습내용 프레임속도의조절 30fps 맞추기 스프라이트프레임속도의조절 프레임속도 (Frame Rate) 프레임속도란? 얼마나빨리프레임 ( 일반적으로하나의완성된화면 ) 을만들어낼수있는지를나타내는척도 일반적으로초당프레임출력횟수를많이사용핚다. FPS(Frame Per Sec)
More information1장. 리스트
01. 링크드리스트 02. 더블링크드리스트 03. 환형링크드리스트 배열과는달리유연하게크기를바꿀수있는자료구조 각노드는다음노드를가리키는포인터를가짐. 각노드를다음노드를가리키는포인터로연결하여만든리스트. Single Linked List 라고도함. 링크드리스트의첫번째노드를헤드 (Head), 마지막노드를테일 (Tail) 이라고한다. C 언어로표현하는링크드리스트의노드 typedef
More informationJava ...
컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.
More information<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >
제 7 강의. 고급연결리스트 1. 원형연결리스트 2. 이중연결리스트 3. 연결리스트알고리즘 1 1. 원형연결리스트 (Circularly Linked Lists) 원형연결리스트란? 연결리스트의맨끝노드를첫번째노드와연결시켜서원형으로만든리스트 단순연결리스트 (Singly Linked List) 불편한점 - 연결리스트의노드포인터를알고있을때첫번째노드는바로찾아갈수있지만마지막노드는리스트전체를따라가면서끝을찾아가야한다
More information슬라이드 1
CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element
More information완벽한개념정립 _ 행렬의참, 거짓 수학전문가 NAMU 선생 1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에
1. 행렬의참, 거짓개념정리 1. 교환법칙과관련한내용, 는항상성립하지만 는항상성립하지는않는다. < 참인명제 > (1),, (2) ( ) 인경우에는 가성립한다.,,, (3) 다음과같은관계식을만족하는두행렬 A,B에대하여 AB=BA 1 가성립한다 2 3 (4) 이면 1 곱셈공식및변형공식성립 ± ± ( 복호동순 ), 2 지수법칙성립 (은자연수 ) < 거짓인명제 >
More information5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp
1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n
More information강의 개요
DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE
More information2007_2_project4
Programming Methodology Instructor: Kyuseok Shim Project #4: external sort with template Due Date: 0:0 a.m. between 2007-12-2 & 2007-12-3 Introduction 이프로젝트는 C++ 의 template을이용한 sorting algorithm과정렬해야할데이터의크기가
More information<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>
SIMATIC S7 Siemens AG 2004. All rights reserved. Date: 22.03.2006 File: PRO1_17E.1 차례... 2 심벌리스트... 3 Ch3 Ex2: 프로젝트생성...... 4 Ch3 Ex3: S7 프로그램삽입... 5 Ch3 Ex4: 표준라이브러리에서블록복사... 6 Ch4 Ex1: 실제구성을 PG 로업로드하고이름변경......
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationMicrosoft PowerPoint 알고리즘 개요(Part 1).pptx
알고리즘 (Algorithm) 알고리즘개요 ( 효율, 분석, 차수 ) Part 1 2011년봄학기 강원대학교컴퓨터과학전공문양세 강의내용 프로그램과알고리즘순차검색과이진검색피보나찌수구하기알고리즘분석차수 (O,, ) Part 2 Page 2 프로그램의설계과정 설계분석예문제알고리즘만족? 프로그램 아니오 재설계 알고리즘은주어진문제를논리적으로해결하는과정이다. 분석을통해작성한알고리즘의정확성을파악할수있고,
More informationUI TASK & KEY EVENT
2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize
More informationMicrosoft PowerPoint Merging and Sorting Files.ppt
자료처리 () 006 년봄학기문양세강원대학교컴퓨터과학과 정렬 / 합병의개요 정렬의종류 : 내부정렬, 외부정렬 내부정렬 (internal sorting) 데이타가적어서메인메모리내에모두저장시켜정렬가능할때사용함 레코드의판독 (read) 및기록 (write) 에걸리는시간이문제가되지않음 외부정렬 (external sorting) 데이타가많아서메인메모리의용량을초과하여보조기억장치
More informationMicrosoft PowerPoint - chap06-4 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-4 참고자료 문자열의처리 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 문자열의연산 문자열은배열의형태로구현된응용자료형이므로연산을자유롭게할수없다. 배열에저장된문자열의길이를계산하는작업도간단하지않다.
More informationInfinity(∞) Strategy
반복제어 표월성 passwd74@cherub.sungkyul.edu 개요 for() 문 break문과 continue문 while문 do-while문 for() 문 for() 문형식 for( 표현식1; 표현식2; 표현식3) 여러문장들 ; 표현식 1 : 초기화 (1 번만수행 ) 표현식 2 : 반복문수행조건 ( 없으면무한반복 ) 표현식 3 : 반복문수행횟수 for()
More information슬라이드 1
CHAP 2: 순환 (Recursion) 순환 (recursion) 이란? 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로 되어있는경우에적합한방법 순환 (recursion) 의예 팩토리얼값구하기 피보나치수열 1 n! n*( n 1)! fib( n) 0 1 fib( n 2) n n 0 ` 1 fib( n 1) if n 0 if
More information02장.배열과 클래스
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 배열과구조체 1/20 많은자료의처리? 배열 (array), 구조체 (struct) 성적처리프로그램에서 45 명의성적을저장하는방법 주소록프로그램에서친구들의다양한정보 ( 이름, 전화번호, 주소, 이메일등 ) 를통합하여저장하는방법 홍길동 이름 :
More informationData structure: Assignment 1 Seung-Hoon Na October 1, Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은
Data structure: Assignment 1 Seung-Hoon Na October 1, 018 1 1.1 Assignment 1 Binary search 주어진 정렬된 입력 파일이 있다고 가정하자. 단, 파일내의 숫자는 공백으로 구 분, file내에 숫자들은 multiline으로 구성될 수 있으며, 한 라인에는 임의의 갯수의 숫자가 순서대로 나열될
More information