Microsoft PowerPoint - ch11_정렬 [호환 모드]
|
|
- 유신 한
- 6 years ago
- Views:
Transcription
1 정렬 자바로배우는쉬운자료구조
2 이장에서다룰내용 1 정렬 6 셸정렬 2 선택정렬 7 병합정렬 3 버블정렬 8 기수정렬 4 퀵정렬 9 힙정렬 5 삽입정렬 10 트리정렬 2
3 정렬 (1) 정렬 (sort) 2 개이상의자료를작은것부터큰순서 ( 오름차순, ascending) 로정렬또는큰것부터작은것순서 ( 내림차순, descending) 로재배열하는것 키 : 자료를정렬하는데사용하는기준값 정렬의예 3
4 정렬 (2) 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수적이다. ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 4
5 정렬 (3) 정렬방법의분류 실행방법에따른분류 비교식정렬 (comparative sort) 비교하고자하는각키값들을한번에두개씩비교하여교환하는방식으로정렬을실행하는방법 분산식정렬 (distribute sort) 키값을기준으로하여자료를여러개의부분집합으로분해하고, 각부분집합을정렬함으로써전체를정렬하는방식으로실행하는방법 5
6 정렬 (4) 정렬장소에따른분류 내부정렬 (internal sort) 정렬할자료를메인메모리에올려서정렬하는방식 정렬속도가빠르지만정렬할수있는자료의양이메인메모리의용량에따라제한됨 내부정렬방식 교환방식 : 키를비교하고교환하여정렬하는방식» 선택정렬, 버블정렬, 퀵정렬 삽입방식 : 키를비교하고삽입하여정렬하는방식» 삽입정렬, 셸정렬 병합방식 : 키를비교하고병합하여정렬하는방식» 2-way 병합, n-way 병합 분배방식 : 키를구성하는값을여러개의부분집합에분배하여정렬하는방식» 기수정렬 선택방식 : 이진트리를사용하여정렬하는방식» 힙정렬, 트리정렬 6
7 정렬 (5) 외부정렬 (external sort) 정렬할자료를보조기억장치에서정렬하는방식 내부정렬보다속도는떨어지지만내부정렬로처리할수없는대용량자료에대한정렬가능 외부정렬방식 병합방식 : 파일을부분파일로분리하여각각을내부정렬방법으로정렬하여병합하는정렬방식» 2-way 병합, n-way 병합 7
8 정렬 (6) 많은정렬알고리즘존재 단순하지만비효율적인방법 -- 삽입정렬, 선택정렬, 버블정렬등 복잡하지만효율적인방법 -- 퀵정렬, 히프정렬, 합병정렬, 기수정렬등 모든경우에최적인알고리즘은없음 응용에맞추어선택 정렬알고리즘의평가 비교횟수 이동횟수 8
9 정렬 (7) 정렬은왜할까? 9
10 선택정렬 (1) 선택정렬 (selection sort) 전체원소들중에서기준위치에맞는원소를선택하여자리를교환하는방식으로정렬 수행방법 1 전체원소중에서가장작은원소를찾아서선택하여첫번째원소와자리를교환한다. 2 그다음두번째로작은원소를찾아선택하여두번째원소와자리를교환한다. 3 그다음에는세번째로작은원소를찾아서세번째원소와자리를교환한다. 4 이과정을반복하면서정렬을완성한다. 10
11 선택정렬 (2) 선택정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을선택정렬방법으로정렬하는과정을살펴보자. 1 첫번째자리를기준위치로정하고, 전체원소중에서가장작은원소 2 를선택하여기준위치에있는원소 69와자리교환 11
12 선택정렬 (3) 2 두번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 8을선택하여기준위치에있는원소 10과자리교환 12
13 선택정렬 (4) 3 세번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 10을선택하여기준위치에있는원소 30과자리교환 13
14 선택정렬 (5) 4 네번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 16을선택하여기준위치에있는원소 69와자리교환 14
15 선택정렬 (6) 5 다섯번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 22를선택하여기준위치에있는원소 69와자리교환 15
16 선택정렬 (7) 6 여섯번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 30을선택하여기준위치에있는원소 30과자리교환 ( 제자리 ) 16
17 선택정렬 (8) 7 일곱번째자리를기준위치로정하고, 나머지원소중에서가장작은원소 31을선택하여기준위치에있는원소 31과자리교환. ( 제자리 ) 8 마지막에남은원소 69는전체원소중에서가장큰원소로서이미마지막자리에정렬된상태이므로실행을종료하고선택정렬이완성된다. 17
18 선택정렬 (9) 선택정렬알고리즘 selectionsort(a[],n) [ 알고리즘 11-1] for (i 1; i<n; i i+1) { a[i],,a[n-1] 중에서가장작은원소 a[k] 를선택하여, a[i] 와교환한다 ; } end selectionsort() 선택정렬알고리즘분석 메모리사용공간 n개의원소에대하여 n개의메모리사용 비교횟수 1단계 : 첫번째원소를기준으로 n개의원소비교 2단계 : 두번째원소를기준으로마지막원소까지 n-1개의원소비교 3단계 : 세번째원소를기준으로마지막원소까지 n-2개의원소비교 18
19 선택정렬 (10) i 단계 : i 번째원소를기준으로 n-i 개의원소비교 어떤경우에서나비교횟수가같으므로시간복잡도는 O(n 2 ) 19
20 선택정렬 (11) 선택정렬프로그램 01 class Sort{ 02 public void selectionsort(int a[]){ 03 int i, j, min; 04 for(i=0; i<a.length-1; i++){ 05 min = i; 06 for(j=i+1; j<a.length; j++){ 07 if(a[j] < a[min]) 08 min = j; 09 } 10 swap(a, min, i); 11 System.out.printf("\n선택정렬 %d 단계 : ", i+1); 12 for(j=0; j<a.length-1; j++) 13 System.out.printf("%3d ", a[j]); 14 } 15 } public void swap(int a[], int i, int j){ [ 예제 11-1] >> 계속 20
21 선택정렬 (12) 18 int temp = a[i]; 19 a[i] = a[j]; 20 a[j] = temp; 21 } 22 } class Ex11_1{ 25 public static void main(string args[]){ 26 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 27 Sort S = new Sort(); 28 System.out.printf("\n정렬할원소 : "); 29 for(int i=0; i<a.length; i++) 30 System.out.printf(" %d", a[i]); 31 System.out.println(); 32 S.selectionSort(a); 33 } 34 } [ 예제 11-1] 21
22 선택정렬 (13) 실행결과 22
23 버블정렬 (1) 버블정렬 (bubble sort) 인접한두개의원소를비교하여자리를교환하는방식 첫번째원소부터마지막원소까지반복하여한단계가끝나면가장큰원소가마지막자리로정렬 첫번째원소부터인접한원소끼리계속자리를교환하면서맨마지막자리로이동하는모습이물속에서물위로올라오는물방울모양과같다고하여버블 (bubble) 정렬이라함. 버블정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을버블정렬방법으로정렬하는과정을살펴보자. 1 인접한두원소를비교하여자리를교환하는작업을첫번째원소부터마지막원소까지차례로반복하여가장큰원소 69를마지막자리로정렬 23
24 버블정렬 (2) 24
25 버블정렬 (3) 2 버블정렬을수행하여나머지원소중에서가장큰원소 31을끝에서두번째자리로정렬. 25
26 버블정렬 (4) 3 버블정렬을수행하여나머지원소중에서가장큰원소 30을끝에서세번째자리로정렬. 26
27 버블정렬 (5) 4 버블정렬을수행하여나머지원소중에서가장큰원소 22를끝에서네번째자리로정렬. 27
28 버블정렬 (6) 5 버블정렬을수행하여나머지원소중에서가장큰원소 16을끝에서다섯번째자리로정렬. 28
29 버블정렬 (7) 6 버블정렬을수행하여나머지원소중에서가장큰원소 10을끝에서여섯번째자리로정렬. 29
30 버블정렬 (8) 7 버블정렬을수행하여나머지원소중에서가장큰원소 8을끝에서일곱번째자리로정렬. 마지막에남은첫번째원소는전체원소중에서가장작은원소로이미정렬된상태이므로실행을종료하고버블정렬이완성된다. 30
31 버블정렬 (9) 버블정렬알고리즘 bubblesort(a[],n) for (i n-1; i 0; i i-1) { for (j 0; j<i; j j+1) { if (a[j]>a[j+1]) then { temp a[j]; a[j] a[j+1]; a[j+1] temp; } } } end bubblesort() [ 알고리즘 11-2] 31
32 버블정렬 (10) 버블정렬알고리즘분석 메모리사용공간 n개의원소에대하여 n개의메모리사용 연산시간 최선의경우 : 자료가이미정렬되어있는경우 비교횟수 : i 번째원소를 (n-i) 번비교하므로, n(n-1)/2 번 자리교환횟수 : 자리교환이발생하지않는다. 최악의경우 : 자료가역순으로정렬되어있는경우 비교횟수 : i 번째원소를 (n-i) 번비교하므로, n(n-1)/2 번 자리교환횟수 : i 번째원소를 (n-i) 번교환하므로, n(n-1)/2 번 평균시간복잡도 : O(n 2 ) 32
33 버블정렬 (11) 버블정렬프로그램 01 class Sort{ 02 public void bubblesort(int a[]){ 03 int i, j, temp, size; 04 size = a.length; 05 for(i=size-1; i>0; i--){ 06 System.out.printf("\n버블정렬 %d 단계 : ", size-i); 07 for(j=0; j<i; j++){ 08 if(a[j] > a[j+1]){ 09 temp = a[j]; 10 a[j] = a[j+1]; 11 a[j+1] = temp; 12 } 13 System.out.printf("\n\t"); 14 for(int k=0; k<size; k++) 15 System.out.printf("%3d ", a[k]); 16 } 17 } [ 예제 11-2] >> 계속 33
34 버블정렬 (12) 18 } 19 } class Ex11_2{ 22 public static void main(string args[]){ 23 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 24 Sort S = new Sort(); 25 System.out.printf("\n정렬할원소 : "); 26 for(int i=0; i<a.length; i++) 27 System.out.printf(" %d", a[i]); 28 System.out.println(); 29 S.bubbleSort(a); 30 } 31 } [ 예제 11-2] 34
35 버블정렬 (13) 실행결과 35
36 퀵정렬 (1) 퀵정렬 (quick sort) 정렬할전체원소에대해서정렬을수행하지않고, 기준값을중심으로왼쪽부분집합과오른쪽부분집합으로분할하여정렬하는방법 왼쪽부분집합에는기준값보다작은원소들을이동시키고, 오른쪽부분집합에는기준값보다큰원소들을이동시킨다. 기준값 : 피봇 (pivot) 일반적으로전체원소중에서가운데에위치한원소를선택 퀵정렬은다음의두가지기본작업을반복수행하여완성한다. 분할 (divide) 정렬할자료들을기준값을중심으로 2 개의부분집합으로분할하기 정복 (conquer) 부분집합의원소들중에서기준값보다작은원소들은왼쪽부분집합으로, 기준값보다큰원소들은오른쪽부분집합으로정렬하기. 부분집합의크기가 1 이하로충분히작지않으면순환호출을이용하여다시분할. 36
37 퀵정렬 (2) 퀵정렬수행방법 부분집합으로분할하기위해서 L과 R을사용 1 왼쪽끝에서오른쪽으로움직이면서크기를비교하여피봇보다크거나같은원소를찾아 L로표시 2 오른쪽끝에서왼쪽으로움직이면서피봇보다작은원소를찾아 R로표시 3 L이가리키는원소와 R이가리키는원소를서로교환한다. L와 R이만나게되면피봇과 R의원소를서로교환하고, 교환한위치를피봇의위치로확정한다. 피봇의확정된위치를기준으로만들어진왼쪽부분집합과오른쪽부분집합에대해서퀵정렬을순환적으로반복수행하는데부분집합의크기가 1 이하가되면퀵정렬을종료한다. 37
38 퀵정렬 (3) 퀵정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을퀵정렬방법으로정렬하는과정을살펴보자. 1 원소의개수가 8개이므로네번째자리에있는원소 2를첫번째피봇으로선택하고퀵정렬시작. 38
39 퀵정렬 (4) L이오른쪽으로이동하면서피봇보다크거나같은원소를찾고, R은왼쪽으로이동하면서피봇보다작은원소를찾는다. L은원소69를찾았지만, R은피봇보다작은원소를찾지못한채로원소 69에서 L과만나게된다. L 과 R 이만났으므로, 원소 69 를피봇과교환하여피봇원소 2 의위치를확정한다. 39
40 퀵정렬 (5) 2 피봇 2의왼쪽부분집합은공집합이므로퀵정렬을수행하지않고, 오른쪽부분집합에대해서퀵정렬수행. 오른쪽부분집합의원소가 7개이므로가운데있는원소 16을피봇으로선택 L 이찾은 30 과 R 이찾은 8 을서로교환한다. 40
41 퀵정렬 (6) 현재위치에서 L과 R의작업을반복한다. L은원소69를찾았지만, R은피봇보다작은원소를찾지못한채로원소 69에서 L과만나게된다. L과 R이만났으므로, 원소 69를피봇과교환하여피봇원소 16의위치를확정한다. 41
42 퀵정렬 (7) 3 피봇 16 의왼쪽부분집합에서원소 10 을피봇으로선택하여퀵정렬수행. L의원소 10과 R의원소 8을교환하는데, L의원소가피봇이므로피봇원소 10의위치가확정된다. 42
43 퀵정렬 (8) 4 피봇 10 의왼쪽부분집합의원소가한개이므로퀵정렬을수행하지않고, 오른쪽부분집합은공집합이므로역시퀵정렬을수행하지않는다. 이제 1 단계의피봇이었던원소 16 의오른쪽부분집합에대해퀵정렬수행. 오른쪽부분집합의원소가 4 개이므로원소 30 을피봇으로선택. 피봇 L 이찾은 69 와 R 이찾은 22 를서로교환한다. 43
44 퀵정렬 (9) 현재위치에서 L과 R의작업을반복한다. L은오른쪽으로이동하면서피봇보다크거나같은원소인 30을찾고, R은왼쪽으로이동하면서피봇보다작은원소를찾다가못찾고원소 30에서 L과만난다. L과 R이만났으므로피봇과교환하는데 R의원소가피봇이므로결국제자리가확정된다. 44
45 퀵정렬 (10) 5 피봇 30의왼쪽부분집합의원소가한개이므로퀵정렬을수행하지않고, 오른쪽부분집합에대해서퀵정렬수행. 오른쪽부분집합의원소 2개중에서원소 31을피봇으로선택 L 은오른쪽으로이동하면서원소 31 을찾고, R 은왼쪽으로이동하면서피봇보다작은원소를찾다가못찾은채로원소 31 에서 L 과만난다. L 과 R 이만났으므로피봇과교환하는데 R 의원소가피봇이므로결국제자리가확정된다. 45
46 퀵정렬 (11) 피봇 31 의오른쪽부분집합의원소가한개이므로퀵정렬을수행하지않는다. 이로써전체퀵정렬이모두완성되었다. 46
47 퀵정렬 (12) 퀵정렬알고리즘 quicksort(a[], begin, end) if (m < n) then { p partition(a, begin, end); quicksort(a[], begin, p-1); quicksort(a[], p+1, end); } end quicksort() [ 알고리즘 11-3] 47
48 퀵정렬 (13) 퀵정렬알고리즘의분할연산알고리즘 partiton(a[], begin, end) pivot (begin + end)/2; L begin; R end; while(l<r) do { while(a[l]<a[pivot] and L<R) do L++; while(a[r] a[pivot] and L<R) do R--; if(l<r) then { // L 의원소와 R 의원소교환 temp a[l]; a[l] a[r]; a[r] temp; } } temp a[pivot]; // R 의원소와피봇원소교환 a[pivot] a[r]; a[r] temp; return L; end partition() [ 알고리즘 11-4] 48
49 퀵정렬 (13-1) Partition 함수 피봇 (pivot): 가장왼쪽숫자라고가정 두개의변수 low와 high를사용한다. low는피봇보다작으면통과, 크면정지 high는피봇보다크면통과, 작으면정지 정지된위치의숫자를교환 low와 high가교차하면종료 49
50 퀵정렬 (14) 퀵정렬알고리즘분석 메모리사용공간 n 개의원소에대하여 n 개의메모리사용 연산시간 최선의경우 피봇에의해서원소들이왼쪽부분집합과오른쪽부분집합으로정확히 n/2 개씩이등분이되는경우가반복되어수행단계수가최소가되는경우 최악의경우 피봇에의해원소들을분할하였을때 1 개와 n-1 개로한쪽으로치우쳐분할되는경우가반복되어수행단계수가최대가되는경우 평균시간복잡도 : O(n log 2 n) 같은시간복잡도를가지는다른정렬방법에비해서자리교환횟수를줄임으로써더빨리실행되어실행시간성능이좋은정렬방법 50
51 퀵정렬 (15) 퀵정렬프로그램 01 class Sort{ [ 예제 11-3] 02 int i=0; 03 public int partition(int a[], int begin, int end){ 04 int pivot, temp, L, R, t; L = begin; 07 R = end; 08 pivot = (begin + end)/2; 09 System.out.printf("\n [ 퀵정렬 %d 단계 : pivot=%d ]\n", ++i, a[pivot]); 10 while(l<r){ 11 while((a[l]<a[pivot]) && (L<R)) L++; 12 while((a[r]>=a[pivot]) && (L<R)) R--; 13 if(l<r){ 14 temp = a[l]; 15 a[l] = a[r]; 16 a[r] = temp; 17 } >> 계속 51
52 퀵정렬 (16) 18 } 19 temp = a[pivot]; 20 a[pivot] = a[r]; 21 a[r] = temp; 22 for(t=0; t<a.length; t++) 23 System.out.printf("%3d ", a[t]); 24 System.out.println(); 25 return L; 26 } public void quicksort(int a[], int begin, int end){ 29 if(begin < end){ 30 int p; 31 p = partition(a, begin, end); 32 quicksort(a, begin, p-1); 33 quicksort(a, p+1, end); 34 } 35 } [ 예제 11-3] 52
53 퀵정렬 (17) 36 } class Ex11_3{ 39 public static void main(string args[]){ 40 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 41 Sort S = new Sort(); 42 System.out.printf("\n정렬할원소 : "); 43 for(int i=0; i<a.length; i++) 44 System.out.printf(" %d", a[i]); 45 System.out.println(); 46 S.quickSort(a, 0, 7); 47 } 48 } [ 예제 11-3] 53
54 퀵정렬 (18) 실행결과 54
55 삽입정렬 (1) 삽입정렬 (insert sort) 정렬되어있는부분집합에정렬할새로운원소의위치를찾아삽입하는방법 정렬할자료를두개의부분집합 S와 U로가정 부분집합 S : 정렬된앞부분의원소들 부분집합 U : 아직정렬되지않은나머지원소들 정렬되지않은부분집합 U의원소를하나씩꺼내서이미정렬되어있는부분집합 S의마지막원소부터비교하면서위치를찾아삽입 삽입정렬을반복하면서부분집합 S의원소는하나씩늘리고부분집합 U 의원소는하나씩감소하게한다. 부분집합 U가공집합이되면삽입정렬이완성된다. 55
56 삽입정렬 (2) 삽입정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을삽입정렬방법으로정렬하는과정을살펴보자. 초기상태 : 첫번째원소는정렬되어있는부분집합 S로생각하고나머지원소들은정렬되지않은원소들의부분집합 U로생각한다. S={69}, U={10, 30, 2, 16, 8, 31, 22} 56
57 삽입정렬 (3) 1 U의첫번째원소 10을 S의마지막원소 69와비교하여 (10 < 69) 이므로원소 10은원소 69의앞자리가된다. 더이상비교할 S의원소가없으므로찾은위치에원소 10을삽입한다. S={10, 69}, U={30, 2, 16, 8, 31, 22} 57
58 삽입정렬 (4) 2 U의첫번째원소 30을 S의마지막원소 69와비교하여 (30 < 69) 이므로원소 69의앞자리원소 10과비교한다. (30 > 10) 이므로원소 10과 69 사이에삽입한다. S={10, 30, 69}, U={2, 16, 8, 31, 22} 58
59 삽입정렬 (5) 3 U의첫번째원소 2를 S의마지막원소 69와비교하여 (2 < 69) 이므로원소 69의앞자리원소 30과비교하고, (2 < 30) 이므로다시그앞자리원소 10과비교하는데, (2 < 10) 이면서더이상비교할 S의원소가없으므로원소 10의앞에삽입한다. S={2, 10, 30, 69}, U={16, 8, 31, 22} 59
60 삽입정렬 (6) 4 U의첫번째원소 16을 S의마지막원소 69와비교하여 (16 < 69) 이므로그앞자리원소 30과비교한다. (16 < 30) 이므로다시그앞자리원소 10과비교하여, (16 > 10) 이므로원소 10과 30 사이에삽입한다. S={2, 10, 16, 30, 69}, U={8, 31, 22} 60
61 삽입정렬 (7) 5 U의첫번째원소 8을 S의마지막원소 69와비교하여 (8 < 69) 이므로그앞자리원소 30과비교한다. (8 < 30) 이므로그앞자리원소 10과비교하여, (8 < 10) 이므로다시그앞자리원소 2와비교하는데, (8 > 2) 이므로원소 2와 10 사이에삽입한다. S={2, 8, 10, 16, 30, 69}, U={31, 22} 61
62 삽입정렬 (8) 6 U의첫번째원소 31을 S의마지막원소 69와비교하여 (31 < 69) 이므로그앞자리원소 30과비교한다. (31 > 30) 이므로원소 30과 69 사이에삽입한다. S={2, 8, 10, 16, 30, 31, 69}, U={22} 62
63 삽입정렬 (9) 7 U의첫번째원소 22를 S의마지막원소 69와비교하여 (22 < 69) 이므로그앞자리원소 31과비교한다. (22 < 31) 이므로그앞자리원소 30과비교하고, (22 < 30) 이므로다시그앞자리원소 16과비교하여, (22 > 16) 이므로원소 16과 30 사이에삽입한다. S={2, 8, 10, 16, 22, 30, 31, 69}, U={} U 가공집합이되었으므로실행을종료하고삽입정렬이완성된다. 63
64 삽입정렬 (10) 삽입정렬알고리즘 insertionsort(a[],n) for (i 1; i<n; i i+1) do { temp a[i]; j i; if (a[j-1]>temp) then move true; else move false; while (move) do { a[j] a[j-1]; j j-1; if (j>0 and a[j-1]>temp) then move true; else move false; } a[j] temp; } end insertionsort() [ 알고리즘 11-5] 64
65 삽입정렬 (11) 삽입정렬알고리즘분석 메모리사용공간 n 개의원소에대하여 n 개의메모리사용 연산시간 최선의경우 : 원소들이이미정렬되어있어서비교횟수가최소인경우 이미정렬되어있는경우에는바로앞자리원소와한번만비교한다. 전체비교횟수 = n-1 시간복잡도 : O(n) 최악의경우 : 모든원소가역순으로되어있어서비교횟수가최대인경우 전체비교횟수 = (n-1) = n(n-1)/2 시간복잡도 : O(n 2 ) 삽입정렬의평균비교횟수 = n(n-1)/4 평균시간복잡도 : O(n 2 ) 65
66 삽입정렬 (12) 최선의경우 : 이미정렬된상태에서의삽입 최악의경우 : 역순으로정렬된상태에서의삽입 66
67 삽입정렬 (13) 삽입정렬프로그램 01 class Sort{ 02 public void insertionsort(int a[], int size){ 03 int i, j, t, temp; 04 for(i=1; i<size; i++){ 05 temp = a[i]; 06 j = i; 07 while((j>0) && (a[j-1]>temp)){ 08 a[j] = a[j-1]; 09 j--; 10 } 11 a[j] = temp; 12 System.out.printf("\n삽입정렬 %d 단계 : ", i); 13 for(t=0; t<size; t++) 14 System.out.printf("%3d ", a[t]); 15 } 16 System.out.println(); 17 } [ 예제 11-4] >> 계속 67
68 삽입정렬 (14) 18 } class Ex11_4{ 21 public static void main(string args[]){ 22 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 23 int size = a.length; 24 Sort S = new Sort(); 25 System.out.printf("\n정렬할원소 : "); 26 for(int i=0; i<a.length; i++) 27 System.out.printf(" %d", a[i]); 28 System.out.println(); 29 S.insertionSort(a, size); 30 } 31 } [ 예제 11-4] 68
69 삽입정렬 (15) 실행결과 69
70 셸정렬 (1) 셸정렬 (shell sort) 일정한간격 (interval) 으로떨어져있는자료들끼리부분집합을구성하고각부분집합에있는원소들에대해서삽입정렬을수행하는작업을반복하면서전체원소들을정렬하는방법 전체원소에대해서삽입정렬을수행하는것보다부분집합으로나누어정렬하게되면비교연산과교환연산감소 셸정렬의부분집합 부분집합의기준이되는간격을매개변수 h 에저장 한단계가수행될때마다 h의값을감소시키고셸정렬을순환호출 h가 1이될때까지반복 셸정렬의성능은매개변수 h 의값에따라달라진다. 정렬할자료의특성에따라매개변수생성함수를사용 일반적으로사용하는 h의값은원소개수의 1/2을사용하고한단계수행될때마다 h의값을반으로감소시키면서반복수행 70
71 셸정렬 (1-1) 삽입정렬이어느정도정렬된배열에대해서는대단히빠른것에착안한방법 셸정렬은삽입정렬보다빠르다. 삽입정렬의최대문제점은요소들이이동할때, 이웃한위치로만이동 셸정렬에서는요소들이멀리떨어진위치로도이동할수있다. 전체리스트를일정간격의부분리스트로나누고부분리스트를정렬한다. 간격 (gap) 은점점줄어들게된다. 평균적인경우시간복잡도는 O(n 1.5 ) 71
72 셸정렬 (2) 셸정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을셸정렬방법으로정렬하는과정을살펴보자. 1 원소의개수가 8 개이므로매개변수 h 는 4 에서시작한다. h=4 이므로간격이 4인원소들을같은부분집합으로만들면 4개의부분집합이만들어진다
73 셸정렬 (3) 첫번째부분집합 {69, 16} 에대해서삽입정렬을수행하여정렬. 삽입정렬수행전 삽입정렬수행후 두번째부분집합 {10, 8} 에대해서삽입정렬수행. 삽입정렬수행전 삽입정렬수행후
74 셸정렬 (4) 세번째부분집합 {30, 31} 에대해서삽입정렬을수행하는데, (30<31) 이므로자리교환은이루어지지않는다 네번째부분집합 {2, 22} 에대해서삽입정렬을수행하는데, (2<22) 이므로자리교환은이루어지지않는다
75 셸정렬 (5) 2이제h를2로변경하고다시셸정렬시작. h=2 이므로간격이 2인원소들을같은부분집합으로만들면 2개의부분집합이만들어진다 첫번째부분집합 {16, 30, 69, 31} 에대해서삽입정렬을수행하여정렬 삽입정렬수행전 삽입정렬수행후
76 셸정렬 (6) 두번째부분집합 {8, 2, 10, 22} 에대해서삽입정렬을수행하여정렬. 삽입정렬수행전 삽입정렬수행후
77 셸정렬 (7) 3이제h를1로변경하고다시셸정렬시작. h=1 이므로간격이 1인원소들을같은부분집합으로만들면 1개의부분집합이만들어진다. 즉, 전체원소에대해서삽입정렬을수행하고셸정렬이완성된다. 삽입정렬수행전 삽입정렬수행후
78 셸정렬 (8) 셸정렬알고리즘 shellsort(a[],n) interval n; while (interval 1) do { interval interval/2; for (i 0; i<interval; i i+1) do { intervalsort(a[], i, n, interval); } } end shellsort() [ 알고리즘 11-6] 78
79 셸정렬 (9) 셸정렬알고리즘분석 메모리사용공간 n개의원소에대하여 n개의메모리와매개변수 h에대한저장공간사용 연산시간 비교횟수 처음원소의상태에상관없이매개변수 h 에의해결정 일반적인시간복잡도 : O(n 1.25 ) 셸정렬은삽입정렬의시간복잡도 O(n 2 ) 보다개선된정렬방법 79
80 셸정렬 (10) 셸정렬프로그램 01 class Sort{ 02 public void intervalsort(int a[], int begin, int end, int interval){ 03 int i, j, item; 04 for(i=begin+interval; i<=end; i=i+interval){ 05 item = a[i]; 06 for(j=i-interval; j>=begin && item<a[j]; j-=interval) 07 a[j+interval] = a[j]; 08 a[j+interval] = item; 09 } 10 } public void shellsort(int a[], int size){ 13 int i, j, interval, t=0; 14 interval = size/2; 15 while(interval >= 1){ 16 for(i=0; i<interval; i++) 17 intervalsort(a, i, size-1, interval); [ 예제 11-5] >> 계속 80
81 셸정렬 (11) 18 System.out.printf("\n셸정렬 %d 단계 : interval =%d >> ", ++t, [ 예제interval); 11-5] 19 for(j=0; j<size; j++) 20 System.out.printf("%d ", a[j]); 21 System.out.println(); 22 interval /= 2; 23 } 24 } 25 } class Ex11_5{ 28 public static void main(string args[]){ 29 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 30 int size = a.length; 31 Sort S = new Sort(); 32 System.out.printf("\n정렬할원소 : "); 33 for(int i=0; i<a.length; i++) 34 System.out.printf(" %d", a[i]); 35 System.out.println(); 36 S.shellSort(a, size); 37 } 38 } 81
82 셸정렬 (12) 실행결과 82
83 병합정렬 (1) 병합정렬 (merge sort) 여러개의정렬된자료의집합을병합하여한개의정렬된집합으로만드는방법 부분집합으로분할 (divide) 하고, 각부분집합에대해서정렬작업을완성 (conquer) 한후에정렬된부분집합들을다시결합 (combine) 하는분할정복 (divide and conquer) 기법사용 병합정렬방법의종류 2-way 병합 : 2개의정렬된자료의집합을결합하여하나의집합으로만드는병합방법 n-way 병합 : n개의정렬된자료의집합을결합하여하나의집합으로만드는병합방법 83
84 병합정렬 (2) 2-way 병합정렬 : 세가지기본작업을반복수행하면서완성 ⑴ 분할 (divide) : 입력자료를같은크기의부분집합 2개로분할한다. ⑵ 정복 (conquer) : 부분집합의원소들을정렬한다. 부분집합의크기가충분히작지않으면순환호출을이용하여다시분할정복기법을적용한다. ⑶ 결합 (combine) : 정렬된부분집합들을하나의집합으로통합한다. 84
85 병합정렬 (3) 병합정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을병합정렬방법으로정렬하는과정을살펴보자. 1 분할단계 : 정렬할전체자료의집합에대해서최소원소의부분집합이될때까지분할작업을반복하여 1개의원소를가진부분집합 8개를만든다. 85
86 병합정렬 (4) 2 병합단계 : 2 개의부분집합을정렬하면서하나의집합으로병합한다. 8 개의부분집합이 1 개로병합될때까지반복한다. 86
87 병합정렬 (5) 병합정렬알고리즘 mergesort(a[],m,n) if (a[m:n] 의원소수 > 1) then { 전체집합을두개의부분집합으로분할 ; mergesort(a[],m,middle); mergesort(a[],middle+1,n); merge(a[m:middle],a[middle+1:n]); } end mergesort() [ 알고리즘 11-7] 87
88 병합정렬 (6) 병합정렬알고리즘분석 메모리사용공간 각단계에서새로병합하여만든부분집합을저장할공간이추가로필요 원소 n개에대해서 (2 x n) 개의메모리공간사용 연산시간 분할단계 : n개의원소를분할하기위해서 log 2 n번의단계수행 병합단계 : 부분집합의원소를비교하면서병합하는단계에서최대 n번의비교연산수행 전체병합정렬의시간복잡도 : O(n log 2 n) 88
89 병합정렬 (7) 병합정렬프로그램 01 class Sort{ 02 private int sorted[] = new int [30]; public void merge(int a[], int m, int middle, int n){ 05 int size = a.length; 06 int i, j, k, t; 07 i = m; 08 j = middle+1; 09 k = m; 10 while(i<=middle && j<=n){ 11 if(a[i] <= a[j]) sorted[k] = a[i++]; 12 else sorted[k] = a[j++]; 13 k++; 14 } 15 if(i>middle){ 16 for(t=j; t<=n; t++, k++) 17 sorted[k] = a[t]; [ 예제 11-8] >> 계속 89
90 병합정렬 (8) 18 } 19 else{ 20 for(t=i; t<=middle; t++, k++) 21 sorted[k] = a[t]; 22 } for(t=m; t<=n; t++) 25 a[t] = sorted[t]; 26 System.out.printf("\n 병합정렬 >> "); 27 for(t=0; t<size; t++) 28 System.out.printf("%3d ", a[t]); 29 } public void mergesort(int a[], int m, int n) { 32 int middle; 33 if(m<n){ 34 middle = (m+n)/2; 35 mergesort(a, m, middle); [ 예제 11-5] >> 계속 90
91 병합정렬 (9) 36 mergesort(a, middle+1, n); 37 merge(a, m, middle, n); 38 } 39 } 40 } class Ex11_6{ 43 public static void main(string args[]){ 44 int a[] = {69, 10, 30, 2, 16, 8, 31, 22}; 45 int size = a.length; 46 Sort S = new Sort(); 47 System.out.printf("\n정렬할원소 : "); 48 for(int i=0; i<a.length; i++) 49 System.out.printf(" %d", a[i]); 50 System.out.println(); 51 S.mergeSort(a, 0, size-1); 52 } 53 } [ 예제 11-5] >> 계속 91
92 병합정렬 (10) 실행결과 92
93 기수정렬 (1) 기수정렬 (radix sort) 원소의키값을나타내는기수를이용한정렬방법 정렬할원소의키값에해당하는버킷 (bucket) 에원소를분배하였다가버킷의순서대로원소를꺼내는방법을반복하면서정렬 원소의키를표현하는기수만큼의버킷사용 예 ) 10진수로표현된키값을가진원소들을정렬할때에는 0부터 9까지 10개의버킷사용 키값의자리수만큼기수정렬을반복 키값의일의자리에대해서기수정렬을수행하고, 다음단계에서는키값의십의자리에대해서, 그리고그다음단계에서는백의자리에대해서기수정렬수행 한단계가끝날때마다버킷에분배된원소들을버킷의순서대로꺼내서 다음단계의기수정렬을수행해야하므로큐를사용하여버킷을만든다. 93
94 기수정렬 (2) 기수정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을기수정렬방법으로정렬하는과정을살펴보자. 키값이두자리십진수이므로, 10개의버킷을사용하여기수정렬을두번반복한다. 94
95 기수정렬 (3) 초기상태 : 큐를사용하여 0 부터 9 까지 10 개의버킷을만든다. 95
96 기수정렬 (4) 1 키값의일의자리에대해서기수정렬수행 정렬할원소의일의자리값에따라서순서대로버킷에분배 96
97 기수정렬 (5) 버킷에분배된원소들을순서대로꺼내서저장하기 97
98 기수정렬 (6) 2 키값의십의자리에대해서기수정렬수행 정렬할원소의십의자리값에따라서순서대로버킷에분배 98
99 기수정렬 (7) 버킷에분배된원소들을순서대로꺼내서저장하기 99
100 기수정렬 (8) 기수정렬알고리즘 radixsort(a[], n) for (k 1; k n; k k+1) do { for (i 0; i < n; i i+1) do { k 번째자릿수값에따라서해당버킷에저장한다 ; enqueue(q[k], a[i]); } p -1; for (i 0; i 9; i i+1) do { while (Q[i] NULL) do { p p+1; a[p] dequeue(q[i]); } } } end radixsort() [ 알고리즘 11-8] 100
101 기수정렬 (9) 기수정렬알고리즘분석 메모리사용공간 원소 n개에대해서 n개의메모리공간사용 기수 r에따라버킷공간이추가로필요 연산시간 연산시간은정렬할원소의수 n과키값의자릿수 d와버킷의수를결정하는기수 r에따라서달라진다. 정렬할원소 n개를 r개의버킷에분배하는작업 : (n+r) 이작업을자릿수 d 만큼반복 수행할전체작업 : d(n+r) 시간복잡도 : O(d(n+r)) 101
102 힙정렬 (1) 힙정렬 (heap sort) 9장의힙자료구조를이용한정렬방법 힙에서는항상가장큰원소가루트노드가되고삭제연산을수행하면항상루트노드의원소를삭제하여반환 최대힙에대해서원소의개수만큼삭제연산을수행하여내림차순으로정렬수행 최소힙에대해서원소의개수만큼삭제연산을수행하여오름차순으로정렬수행 힙정렬수행방법 ⑴ 정렬할원소들을입력하여최대힙구성 ⑵ 힙에대해서삭제연산을수행하여얻은원소를마지막자리에배치 ⑶ 나머지원소에대해서다시최대힙으로재구성원소의개수만큼 ⑵~⑶ 을반복수행 102
103 힙정렬 (2) 힙정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을힙정렬방법으로정렬하는과정을살펴보자. 초기상태 : 정렬할원소가 8개이므로노드가 8개인완전이진트리를만들고, 최대힙으로구성한다. 103
104 힙정렬 (3) 1 힙에삭제연산을수행하여루트노드의원소 69를구해서배열의마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 104
105 힙정렬 (4) 2 힙에삭제연산을수행하여루트노드의원소 31을구해서배열의비어있는마지막자리에저장, 나머지힙을최대힙으로재구성 105
106 힙정렬 (5) 3 힙에삭제연산을수행하여루트노드의원소 30을구해서배열의비어있는마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 106
107 힙정렬 (6) 4 힙에삭제연산을수행하여루트노드의원소 22를구해서배열의비어있는마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 107
108 힙정렬 (7) 5 힙에삭제연산을수행하여루트노드의원소 16을구해서배열의비어있는마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 108
109 힙정렬 (8) 6 힙에삭제연산을수행하여루트노드의원소 10을구해서배열의비어있는마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 109
110 힙정렬 (9) 7 힙에삭제연산을수행하여루트노드의원소 8을구해서배열의비어있는마지막자리에저장, 나머지원소들에대해서최대힙으로재구성 110
111 힙정렬 (10) 8 힙에삭제연산을수행하여루트노드의원소 2를구해서배열의비어있는마지막자리에저장, 나머지힙을최대힙으로재구성하는데공백힙이되었으므로힙정렬종료 111
112 힙정렬 (11) 힙정렬알고리즘 heapsort(a[]) n a.length-1; for (i n/2; i 1; i i-1) do // 배열 a[] 를히프로변환 makeheap(a, i, n); for (i n-1; i 1; i i-1) do { // 히프의루트노드원소를 temp a[1]; // 배열의비어있는 a[1] a[i+1]; // 마지막자리에저장 a[i+1] temp; makeheap(a, 1, i); } end heapsort() [ 알고리즘 11-9] 112
113 힙정렬 (12) 힙정렬알고리즘의힙재구성연산알고리즘 makeheap(a[], h, m) for (j 2*h; j m; j 2*j) do { if (j < m) then if (a[j] < a[j+1]) then j j+1; if (a[h] a[j]) then exit; else a[j/2] a[j]; } a[j/2] a[h]; end makeheap() [ 알고리즘 11-10] 113
114 힙정렬 (13) 힙알고리즘분석 메모리사용공간 원소 n개에대해서 n개의메모리공간사용 크기 n의힙저장공간 연산시간 힙재구성연산시간 n개의노드에대해서완전이진트리는 log 2 (n+1) 의레벨을가지므로완전이진트리를힙으로구성하는평균시간은 O(log 2 n) n개의노드에대해서 n번의힙재구성작업수행 평균시간복잡도 : O(n log 2 n) 114
115 트리정렬 (1) 트리정렬 (tree sort) 8장의이진탐색트리를이용하여정렬하는방법 트리정렬수행방법 ⑴ 정렬할원소들을이진탐색트리로구성 ⑵ 이진탐색트리를중위우선순회방법 중위순회경로가오름차순정렬이된다. 115
116 트리정렬 (2) 트리정렬수행과정 정렬되지않은 {69, 10, 30, 2, 16, 8, 31, 22} 의자료들을트리정렬방법으로정렬하는과정을살펴보자. 1 원소가 8개를차례대로트리에삽입하여이진탐색트리구성 2 이진탐색트리를중위우선순회방법으로순회하면서저장 116
117 트리정렬 (3) 117
118 트리정렬 (4) 트리정렬알고리즘 treesort(a[], n) for (i 0; i < n; i i+1) do insertbst(bst, a[i]); // 이진탐색트리의삽입연산 inorder(bst); // 중위순회연산 end treesort() [ 알고리즘 11-11] 118
119 트리정렬 (5) 트리알고리즘분석 메모리사용공간 원소 n개에대해서 n개의메모리공간사용 크기 n의이진탐색트리저장공간 연산시간 노드한개에대한이진탐색트리구성시간 : O(log 2 n) n개의노드에대한시간복잡도 : O(n log 2 n) 119
120 정렬알고리즘비교 120
121 자바로배우는쉬운자료구조
Algorithms
자료구조 & 알고리즘 정렬과탐색알고리즘 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 기초적인정렬알고리즘 고급정렬알고리즘 탐색알고리즘 2 정 렬 (Sort) 정렬 (sort) 의개념 순서없이배열되어있는자료들을재배열하는것 정렬의대상 : 레코드 정렬의기준 : 정렬키 (sort key) 필드 정렬방법의분류
More information슬라이드 1
CHAP 9: 정렬 정렬이란? 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수 ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬의단위 레코드 정렬의대상 학생들의레코드 이름학번주소연락처 레코드 필드필드필드필드 키 (key) 정렬알고리즘의개요 많은정렬알고리즘존재 단순하지만비효율적인방법
More information쉽게 배우는 알고리즘 강의노트
쉽게배우는알고리즘 장. 정렬 Sorting http://www.hanbit.co.kr 장. 정렬 Sorting 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고,
More informationCh.8 Procedures and Environments
Chapter 9 정렬 (sorting) SANGJI University Kwangman KO (kkman@sangji.ac.kr) 정렬 (sorting) 이란? 정의 물건을크기순으로오름차순이나내림차순으로나열하는것 컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수적. ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬알고리즘의개요
More informationMicrosoft PowerPoint - 5장 정렬
01. 버블 02. 삽입 03. 퀵 04. C 표준 라이브러리의 퀵 정렬 정렬 정렬 정렬 함수 정렬은물건을크기순으로오름차순이나내림차순으로나열하는것 정렬은컴퓨터공학분야에서가장기본적이고중요한알고리즘중의하나 정렬은자료탐색에있어서필수적이다. ( 예 ) 만약사전에서단어들이정렬이안되어있다면? 정렬은왜하는가? 학생들의레코드 이름학번주소연락처 레코드 필드 필드 필드 필드
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-09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다. 비교정렬의한계를이해하고, 선형시간정렬이가능한조건과선형시간정렬알고리즘을이해한다. - - 한빛미디어 Sortng Algorth
-09- 쉽게배우는알고리즘 장. 정렬 Sortng http://academy.hanb.co.kr 장. 정렬 Sortng 은유, 그것은정신적상호연관성의피륙을짜는방법이다. 은유는살아있다는것의바탕이다. - 그레고리베이트슨 - 2 - 한빛미디어 1 -09- 학습목표 기본정렬알고리즘을이해한다. 정렬을귀납적관점에서볼수있도록한다. 1 장과 2 장에서배운기법을사용해각정렬의수행시간을분석할수있도록한다.
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 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 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 information설계란 무엇인가?
금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,
More information슬라이드 1
CHAP 7: 트리 C 로쉽게풀어쓴자료구조 생능출판사 2005 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 대표이사 응용분야 : 계층적인조직표현 총무부 영업부 생산부 파일시스템 인공지능에서의결정트리 전산팀구매팀경리팀생산 1 팀생산 2 팀 트리의용어 노드 (node): 트리의구성요소 루트 (root): 부모가없는노드
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
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 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 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 information<4D F736F F F696E74202D203728B0E8BBEABAB9C0E2B5B5B0B3B7D02DC1A4B7C4B9AEC1A6292E BC8A3C8AF20B8F0B5E55D>
계산복잡도 Computatioal Complexity 계산복잡도개론정렬문제 알고리즘의분석 어떤특정알고리즘의효율 (efficiecy 을측정 시간복잡도 (time complexity 공간복잡도 (space/memory complexity 문제의분석 일반적으로 계산복잡도분석 이란이를지칭 어떤문제에대해서그문제를풀수있는모든알고리즘의효율의하한 (lower-bou 을결정한다.
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 information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More information제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 11 장포인터 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습합니다.
More informationMicrosoft PowerPoint - 05알고리즘.pptx
이산수학 Discrete Mathematics 알고리즘 (Algorithm) 인천대학교컴퓨터공학과공학시인이숙이철호교수 Jullio@chol.com zullio@inu.ac.kr 010 3957 6683 모바일컴퓨팅연구실 07 401 호 꿈의중독자가되라 출처 : 조영탁의행복한경영이야기나는여러분이 꿈중독자 가되었으면합니다. 꿈이크고꿈이선명하면남이하지말라고해도스스로열심히노력하게될것입니다.
More informationMicrosoft PowerPoint - chap-11.pptx
쉽게풀어쓴 C 언어 Express 제 11 장포인터 컴퓨터프로그래밍기초 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 컴퓨터프로그래밍기초 2 포인터란? 포인터 (pointer): 주소를가지고있는변수 컴퓨터프로그래밍기초 3 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다.
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 Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
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슬라이드 1
Data Structure Chapter 8. 우선순위큐 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 우선순위큐추상데이터타입 우선순위큐 우선순위큐 (priority queue) 정의 : 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게됨 스택이나 FIFO 큐를우선순위큐로구현할수있음
More informationMicrosoft PowerPoint Merging and Sorting Files.ppt
자료처리 () 006 년봄학기문양세강원대학교컴퓨터과학과 정렬 / 합병의개요 정렬의종류 : 내부정렬, 외부정렬 내부정렬 (internal sorting) 데이타가적어서메인메모리내에모두저장시켜정렬가능할때사용함 레코드의판독 (read) 및기록 (write) 에걸리는시간이문제가되지않음 외부정렬 (external sorting) 데이타가많아서메인메모리의용량을초과하여보조기억장치
More information슬라이드 1
CHAP 8: 우선순위큐 yicho@gachon.ac.kr 1 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터
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 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 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 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 information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
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 information정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2
13. 탐색트리 AVL 트리, B- 트리, 2-3-4 트리 정의 이진탐색트리 이진탐색트리 (BST: binary search tree) 는각각의노드가 BST 특성을만족하는키 - 주소쌍을가지고있는이진트리 BST 특성 트리에있는각각의키에대해, 왼쪽서브트리에있는모든키는이것보다작고, 오른쪽서브트리에있는모든키는이것보다큼 < > 2 이진탐색트리의예 3 BST 의최선과최악의경우
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationMicrosoft PowerPoint - 6장 탐색.pptx
01. 순차탐색 02. 이진탐색 03. 이진탐색트리 04. 레드블랙트리 탐색 (search) 기본적으로여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요. 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열, 연결리스트, 트리, 그래프등 탐색키데이터 순차탐색 (sequential
More information슬라이드 1
Data Structure Chapter 1. 자료구조와알고리즘 Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 자료구조와알고리즘 일상생활에서의사물의조직화 해야할일리스트 조직도 일상생활에서의사물의조직화 사전 Ticket Box 3 일상생활과자료구조의비교 일상생활 vs 자료구조 자료구조 스택 큐 리스트 사전, 탐색구조
More informationCh.1 Introduction
Tree & Heap SANGJI University Kwangman Ko (kkman@sangji.ac.kr) 트리개요 트리 (Tree) ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모-자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 kkman@sangji.ac.kr 2 트리자료구조를사용하는이유?
More information슬라이드 1
Recursion SANGJI University KO Kwangman () 1. 개요 재귀 (recursion) 의정의, 순환 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 정의자체가순환적으로되어있는경우에적합한방법 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색
More informationMicrosoft PowerPoint - Java7.pptx
HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)
More informationMicrosoft PowerPoint - 04알고리즘
이산수학 Discrete Mathematics 알고리즘 (Algorithm) 인천대학교컴퓨터공학과공학시인이숙이철호교수 Jullio@chol.com zullio@inu.ac.kr 010 3957 6683 모바일컴퓨팅연구실 07 401 호 상어가바다의절대제왕이된이유 출처 : 조영탁의행복한경영이야기 상어는물고기중유일하게부레가없다. 부레없는물고기는물속에서생존이불가능하다.
More information제 1 장 기본 개념
이진트리순회와트리반복자 트리순회 (tree traversal) 트리에있는모든노드를한번씩만방문 순회방법 : LVR, LRV, VLR, VRL, RVL, RLV L : 왼쪽이동, V : 노드방문, R : 오른쪽이동 왼쪽을오른쪽보다먼저방문 (LR) LVR : 중위 (inorder) 순회 VLR : 전위 (preorder) 순회 LRV : 후위 (postorder)
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
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 informationPowerPoint 프레젠테이션
@ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field
More information제 11 장 다원 탐색 트리
제 11 장 다원탐색트리 Copyright 07 DBLB, Seoul National University m- 원탐색트리의정의와성질 (1) 탐색성능을향상시키려면메모리접근횟수를줄여야함 탐색트리의높이를줄여야함 차수 (degree) 가 2보다큰탐색트리가필요 m- 원탐색트리 (m-way search tree) 공백이거나다음성질을만족 (1) 루트는최대 m 개의서브트리를가진다.
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 informationMicrosoft PowerPoint - 04알고리즘
이산수학 Discrete Mathematics 알고리즘 (Algorithm) 인천대학교컴퓨터공학과공학시인이숙이철호교수 Jullio@chol.com zullio@inu.ac.kr 010 3957 6683 모바일컴퓨팅연구실 07 401 호 상어가바다의절대제왕이된이유 출처 : 조영탁의행복한경영이야기 상어는물고기중유일하게부레가없다. 부레없는물고기는물속에서생존이불가능하다.
More informationJava ...
컴퓨터언어 1 Java 제어문 조성일 조건문 : if, switch 어떠한조건을조사하여각기다른명령을실행 if 문, switch 문 if 문 if - else 문형식 if 문형식 if ( 조건식 ) { 명령문 1; 명령문 2;... if ( 조건식 ) { 명령문 1; 명령문 2;... else { 명령문 a; 명령문 b;... 예제 1 정수를입력받아짝수와홀수를판별하는프로그램을작성하시오.
More informationuntitled
int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015
More information슬라이드 1
CHAP 7: 트리 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 회사의조직 파일디렉토리구조 결정트리 ( 예 ) 골프에대한결정트리 트리의용어 노드 (node): 트리의구성요소
More information입학사정관제도
자료구조 강의노트 교재 : C 로배우는쉬운자료구조 ( 개정판 ) 출판사 : 한빛미디어 (2011 년 3 월발행 ) 저자 : 이지영 소프트웨어학과원성현교수 1 8 장트리 소프트웨어학과원성현교수 93 1. 트리 트리개요 트리 (tree) 란? 리스트, 스택, 큐등은선형자료구조 (linear data structure) 인것에반해서트리는계층 (hierarchy)
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 informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information4장. 순차자료구조
순차자료구조방식 자바로배우는쉬운자료구조 이장에서다룰내용 1 선형리스트 2 선형리스트의구현 3 다항식의순차자료구조표현 4 행렬의순차자료구조표현 2 선형리스트 (1) 리스트 (List) 자료를나열한목록 ( 집합 ) 리스트의예 3 선형리스트 (2) 선형리스트 (Linear List) 순서리스트 (Ordered List) 자료들간에순서를갖는리스트 선형리스트의예 4
More informationMicrosoft PowerPoint - 07-chap05-Stack.ppt
/ 스택이란? 스택 stack): 쌓아놓은더미 hapter 5 스택 Dongwon Jeong djeong@kunsan.ac.kr Department of Informatics & Statistics 학습목표 스택의개념이해 스택의동작원리이해 배열과연결리스트를이용한스택구현 스택응용프로그램 스택의특징 후입선출 LIFO:Last-In First-Out) 가장최근에들어온데이터가가장먼저나감.
More information2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관
2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관 2015 개정교육과정에따른정보과평가기준개발연구 연구협력진 머리말 연구요약 차례 Ⅰ 서론 1 Ⅱ 평가준거성취기준, 평가기준, 성취수준, 예시평가도구개발방향 7 Ⅲ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의개발 25 Ⅳ 정보과평가준거성취기준, 평가기준, 성취수준, 예시평가도구의활용방안
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 - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More information문서의 제목 나눔명조R, 40pt
이문서는나눔글꼴로작성되었습니다. 설치하기 11차시 : 함수동적메모리할당다차원배열 프로그래밍및실험 제 11주 동국대학교조영석 6.6 함수인자로써의배열 - 함수정의에서배열로선언된형식매개변수는 pointer임. - 함수의인자로배열이전달되면배열의기본주소가 ( 배열의내용이아님 ) call-by-value로전달됨. - 배열원소는복사되지않음. 2 ( 예 ) #include
More informationuntitled
- -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int
More informationMicrosoft PowerPoint - ch06 - 배열, 동적배열, 정렬 pm0200
동적배열 배열을위한메모리할당방법 지역변수로자동할당 int score[100]; score[10] = 123; 지역변수로배열을생성하는경우, 크기에제한이있음 동적배열 동적메모리할당 int *score; score = (int *) malloc(100*sizeof(int)); score[10] = 123; 동적메모리할당으로배열을생성하는경우, 더큰배열을사용할수있음
More informationOCW_C언어 기초
초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향
More informationMicrosoft PowerPoint - lec07_tree [호환 모드]
Tree 2008학년도 2학기 kkman@sangji.ac.krac kr -1- 트리 (Tree) 1. 개요 ~ 계층적인구조를나타내는비선형 (Non-linear) 자료구조 ~ 트리는부모 - 자식관계의노드로구성 ~ 응용분야 계층적인조직표현 파일시스템 인공지능에서의결정트리 -2- 트리자료구조를사용하는이유? ~ 다른자료구조와달리비선형구조. ~ 정렬된배열 탐색은빠르지만
More informationPowerPoint 프레젠테이션
정렬알고리즘 9 장. 정렬알고리즘 가장많이, 그리고가장잘알려진알고리즘방법과효율빅오기호로분석 학습목표 정렬알고리즘의분류방법을이해한다. 정렬알고리즘별로작동원리에대해이해한다. 정렬알고리즘별로효율분석방법을이해한다. 정렬알고리즘에따라효율을개선하기위한방법을이해한다. 1 Section 01 정렬의분류 - 정렬의분류정렬 정렬의대상 = 레코드정렬의기준 = 정렬키 (Sort
More information08장.트리
---------------- T STRUTURES USING ---------------- HPTER 트리 /29 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모-자식관계의노드들로이루어짐 응용분야 : 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀 생산 팀 생산 2 팀 (a) 회사의조직도 내문서 동영상음악사진 영화예능드라마 여행 (b) 컴퓨터의폴더구조
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More information원형연결리스트에대한설명중틀린것은 모든노드들이연결되어있다 마지막에삽입하기가간단한다 헤더노드를가질수있다 최종노드포인터가 NULL이다 리스트의 번째요소를가장빠르게찾을수있는구현방법은무엇인가 배열 단순연결리스트 원형연결리스트 이중연결리스트 단순연결리스트의노드포인터 가마지막노드를
리스트에대한설명중틀린것은 구조체도리스트의요소가될수있다 리스트의요소간에는순서가있다 리스트는여러가지방법으로구현될수있다 리스트는집합과동일하다 다음은순차적표현과연결된표현을비교한것이다 설명이틀린것은 연결된표현은포인터를가지고있어상대적으로크기가작아진다 연결된표현은삽입이용이하다 순차적표현은연결된표현보다액세스시간이많이걸린다 연결된표현으로작성된리스트를 개로분리하기가쉽다 다음은연결리스트에서있을수있는여러가지경우를설명했는데잘못된항목은
More information4장.문장
문장 1 배정문 혼합문 제어문 조건문반복문분기문 표준입출력 입출력 형식화된출력 [2/33] ANSI C 언어와유사 문장의종류 [3/33] 값을변수에저장하는데사용 형태 : < 변수 > = < 식 > ; remainder = dividend % divisor; i = j = k = 0; x *= y; 형변환 광역화 (widening) 형변환 : 컴파일러에의해자동적으로변환
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More information슬라이드 1
CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템 ( 여기서의우선순위는대개사건의시각이다.)
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 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 information14장.탐색
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 탐색 1/28 탐색 (search) 이란? 여러개의자료중에서원하는자료를찾는작업 컴퓨터가가장많이하는작업중의하나 탐색을효율적으로수행하는것은매우중요 탐색키 (search key) 항목과항목을구별해주는키 (key) 탐색을위하여사용되는자료구조 배열,
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 알고리즘 개요(Part 1).pptx
알고리즘 (Algorithm) 알고리즘개요 ( 효율, 분석, 차수 ) Part 1 2011년봄학기 강원대학교컴퓨터과학전공문양세 강의내용 프로그램과알고리즘순차검색과이진검색피보나찌수구하기알고리즘분석차수 (O,, ) Part 2 Page 2 프로그램의설계과정 설계분석예문제알고리즘만족? 프로그램 아니오 재설계 알고리즘은주어진문제를논리적으로해결하는과정이다. 분석을통해작성한알고리즘의정확성을파악할수있고,
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More informationMicrosoft PowerPoint - chap10_tree
Chap. 10 : Tree 2007 학년도 2 학기 1. 개요 재귀 (recursion) 의정의, 순환 ~ 정의하고있는개념자체에대한정의내부에자기자신이포함되어있는경우를의미 ~ 알고리즘이나함수가수행도중에자기자신을다시호출하여문제를해결하는기법 ~ 정의자체가순환적으로되어있는경우에적합한방법 ~ 예제 ) 팩토리얼값구하기 피보나치수열 이항계수 하노이의탑 이진탐색 -2-
More informationchap 5: Trees
Chapter 5. TREES 목차 1. Introduction 2. 이진트리 (Binary Trees) 3. 이진트리의순회 (Binary Tree Traversals) 4. 이진트리의추가연산 5. 스레드이진트리 (Threaded Binary Trees) 6. 히프 (Heaps) 7. 이진탐색트리 (Binary Search Trees) 8. 선택트리 (Selection
More information슬라이드 1
CHAP 5 : 스택 yicho@gachon.ac.kr 1 5.1 스택추상데이터타입 스택 (stack) 이란?: 쌓아놓은더미 2 스택의특징 후입선출 (LIFO:Last-In First-Out): 가장최근에들어온데이터가가장먼저나감. D C B C B C B C B A A A A 3 스택의구조 요소 (element) 스택에저장되는것 C 스택상단 (top) : 스택에서입출력이이루어지는부분
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More information슬라이드 1
CHAP 8: 우선순위큐 우선순위큐 우선순위큐 (priority queue): 우선순위를가진항목들을저장하는큐 FIFO 순서가아니라우선순위가높은데이터가먼저나가게된다. 우선순위큐 가장일반적인큐 : 스택이나 FIFO 큐를우선순위큐로구현할수있다. 자료구조스택큐우선순위큐 삭제되는요소가장최근에들어온데이터가장먼저들어온데이터가장우선순위가높은데이터 응용분야 : 시뮬레이션시스템
More information슬라이드 1
CHAP 7: 트리 yicho@gachon.ac.kr 1 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 리스트, 스택, 큐등은선형구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현 컴퓨터디스크의디렉토리구조 인공지능에서의결정트리 (decision tree) 2 2 회사의조직 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산
More information05_tree
Tree Data Structures and Algorithms 목차 트리의개요 이진트리의구현 이진트리의순회 (Traversal) 수식트리 (Expression Tree) 의구현 Data Structures and Algorithms 2 트리의개요 Data Structures and Algorithms 3 트리의접근과이해 트리는계층적관계 (Hierarchical
More informationContents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74
큐 IT CookBook, C 로배우는쉬운자료구조 ( 개정판 ) Contents v 학습목표 자료구조큐에대한개념을스택과비교하여이해한다. 큐의특징과연산방법에대해알아본다. 순차표현방법을이용한큐와연결표현방법을이용한큐를구현해본다. 큐의응용방법을알아본다. v 내용 큐 큐의구현 큐의응용 2/74 1. 큐 v 큐 (Queue) 데이터의삽입과삭제가양쪽끝에서일어나는자료구조
More informationChap 6: Graphs
그래프표현법 인접행렬 (Adjacency Matrix) 인접리스트 (Adjacency List) 인접다중리스트 (Adjacency Multilist) 6 장. 그래프 (Page ) 인접행렬 (Adjacency Matrix) n 개의 vertex 를갖는그래프 G 의인접행렬의구성 A[n][n] (u, v) E(G) 이면, A[u][v] = Otherwise, A[u][v]
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 information슬라이드 1
CHP 6: 큐 C 로쉽게풀어쓴자료구조 생능출판사 2005 큐 (QUEUE) 큐 : 먼저들어온데이터가먼저나가는자료구조 선입선출 (FIFO: First-In First-Out) ( 예 ) 매표소의대기열 Ticket Box 전단 () 후단 () 큐 DT 삽입과삭제는 FIFO 순서를따른다. 삽입은큐의후단에서, 삭제는전단에서이루어진다. 객체 : n 개의 element
More informationPowerPoint 프레젠테이션
순환알고리즘 C 로쉽게풀어쓴자료구조 순환 (recursion) 수행이끝나기전에자기자신을다시호출하여문제해결 - 직접순환, 간접순환 문제정의가순환적으로되어있는경우에적합한방법 ( 예제 ) 팩토리얼 피보나치수열 n! 1 n * ( n 1)! n n 0 fib( n) 1 fib ( n 2) fib( n 1) 1 ` 2 if if n 0 n 1 otherwise 이항계수
More information슬라이드 1
컬렉션프레임워크 (Collection Framework) 의정의 - 다수의데이터를쉽게처리할수있는표준화된방법을제공하는클래스들 - 데이터의집합을다루고표현하기위한단일화된구조 (architecture) - JDK 1.2 이전까지는 Vector, Hashtable, Properties와같은컬렉션클래스로서로다른각자의방식으로처리 - 컬렉션프레임워크는다수의데이터를다루는데필요한다양하고풍부한클래스들을제공하므로프로그래머의부담을상당부분덜어준다.
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 information<4D F736F F F696E74202D20C1A637C0E52DB0EDB1DEBFACB0E1B8AEBDBAC6AE2E >
제 7 강의. 고급연결리스트 1. 원형연결리스트 2. 이중연결리스트 3. 연결리스트알고리즘 1 1. 원형연결리스트 (Circularly Linked Lists) 원형연결리스트란? 연결리스트의맨끝노드를첫번째노드와연결시켜서원형으로만든리스트 단순연결리스트 (Singly Linked List) 불편한점 - 연결리스트의노드포인터를알고있을때첫번째노드는바로찾아갈수있지만마지막노드는리스트전체를따라가면서끝을찾아가야한다
More information01장.자료구조와 알고리즘
---------------- DATA STRUCTURES USING C ---------------- CHAPTER 자료구조와알고리즘 1/30 자료구조 일상생활에서자료를정리하고조직화하는이유는? 사물을편리하고효율적으로사용하기위함 다양한자료를효율적인규칙에따라정리한예 2/30 컴퓨터에서의자료구조 자료구조 (Data Structure) 컴퓨터에서자료를정리하고조직화하는다양한구조
More information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More information7장
CHAP 7: 트리 C 로쉽게풀어쓴자료구조 트리 (TREE) 트리 : 계층적인구조를나타내는자료구조 트리는부모 - 자식관계의노드들로이루어진다. 응용분야 : 계층적인조직표현파일시스템인공지능에서의결정트리 대표이사 총무부 영업부 생산부 전산팀구매팀경리팀생산 1 팀생산 2 팀 * 예제 : 책그림 7-2, 7-3, 7-4 트리의용어 노드 (node): 트리의구성요소 루트
More informationMicrosoft PowerPoint - ch08_큐 [호환 모드]
큐 (Queue) 자바로배우는쉬운자료구조 이장에서다룰내용 1 큐 2 큐의구현 3 큐의응용 2 큐 (1) 큐 (Queue) 스택과마찬가지로삽입과삭제의위치가제한된유한순서리스트 큐의뒤에서는삽입만하고, 앞에서는삭제만할수있는구조 삽입한순서대로원소가나열되어가장먼저삽입 (First-In) 한원소는맨앞에있다가가장먼저삭제 (First-Out) 된다. 선입선출구조 (FIFO,
More information