알고리즘22. 기획 설계 프로그래밍 디버깅 문서 작성
알고리즘?
알고리즘은 이 단계에서 필요하다.
프로그램은 크게 기획, 설계, 프로그래밍, 디버깅, 문서 작성이라는
단계를 거쳐 진행 된다.
23. 자료구조 - 어떤 형태로 표현 될 것인가?
알고리즘 – 표현된 일을 어떻게 처리할 것인가?
알고리즘?
33. 알고리즘 성능 분석
효율적인 알고리즘을 찾고, 사용 해야 한다.
- 빠르게(시간 복잡도) : 수행시간 분석
- 값싸게(공간 복잡도) : 수행시 필요로 하는 메모리 공간 분석
41. 입력 : 외부에서 제공되는 데이터가 0 개 이상 존재한다.
출력 : 적어도 한 가지 이상의 결과를 생성한다.
명확성 : 각 명령은 명확하고 모호하지 않아야 한다.
유한성 : 알고리즘을 수행하면 일정 단계 뒤에는 반드시 종료 된다.
유효성 : 원칙적으로 모든 명령들은 기본적인 것이어야 한다
알고리즘의 특성
44. 선형 탐색법은 맨 앞부터 순서대로 조사하여 찾는 탐색 알고리즘이다.
선형 탐색법 < Linear searcH >
45. 탐색 시작
일치하고 있는지 비교
0 1 2 3 4
7 7 7 7 7
5 3 7
찾고 있는 정보와 일치하면 종료
선형 탐색법 절차
aRRAY
찾을 정보 7
47. 이진 탐색법 < binary searcH >
탐색하는 범위를 줄여가며 원하는 데이터를 찾는 알고리즘이다.
48. 이진 탐색법 < binary searcH >
정렬된 데이터가 아니면 적용이 불가능 하다.
49. 이진 탐색법 < binary searcH >
1. 가운데 요소를 선택하는 처리
2. 가운데 데이터와 원하는 데이터를 비교하는 처리
3. 탐색 범위를 절반으로 좁히는 처리
50. 이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
1. 가운데에 있는 값을 확인한다.
찾는 데이터가 가운데에 있는 값보다 적으므로,
탐색 범위를 앞의 절반으로 좁힌다.
51. 이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
2. 다시 가운데 값을 살펴본다.
찾는 데이터가 가운데에 있는 값보다 크기때문에,
탐색 범위를 뒤의 절반으로 좁힌다.
52. 이진 탐색법 < binary searcH >
11 13 17 19 23 29 31
17찾는 데이터
3. 다시 가운데 값을 살펴본다.
데이터를 찾았다.
가운데 값과 비교하여 일치하지 않으면 앞이나 뒤에 있다는 방식으로
탐색 범위를 절반으로 좁혀나가는 것이다.
53. 해시 탐색법 < hash searcH >
데이터의 내용과 저장한 곳의 요소를 미리 연계해 둠으로써 극히 짧은 시간안에
탐색할 수 있도록 고안된 알고리즘이다.
54. 해시 탐색법 < hash searcH >
1. 미리 탐색하기 쉽도록 공을 보관한다.
15 23 11 26
공을 넣은 칸의 번호 = 공의 숫자 % 7
55. 해시 탐색법 < hash searcH >
2. 해시 탐색으로 값을 찾기
15 23 11 26
찾고 있는 공의 숫자 % 7 = 공이 들어 있는 칸의 번호
56. 전체 원소들 중 위치에 맞는 원소를 선택해 자리를 교환하는 방식으로
구현하는 정렬 알고리즘 이다.
선택 정렬
58. 2 22 42 74 17 7 69 33
선택 정렬
74 22 42 2 17 7 69 33before
after
2. 선택한 값을 맨 앞에 위치한 값과 교환한다.
59. 2 7 42 74 17 22 69 33
선택 정렬
2 22 42 74 17 7 69 33before
after
3. 정렬된 값을 제외한 나머지 리스트를 대상으로 교환을 반복
61. 22 74 42 2 17 7 69 33
버블 정렬
74 22 42 2 17 7 69 33before
after
1. 인접한 데이터를 비교해서 정렬이 되어 있지 않을 경우 정렬
62. 22 42 74 2 17 7 69 33
22 74 42 2 17 7 69 33
22 42 2 17 7 69 33 74
버블 정렬
before
after
2. 처음 과정을 반복하여 가장 큰 값을 가장 마지막으로 정렬
result
63. 22 42 2 17 7 69 33 74
2 7 17 22 33 42 69 74
22 42 2 17 7 33 69 74
버블 정렬
before
after
3. 마지막에 정렬된 값을 제외한 나머지 리스트를 대상으로 앞의 과정을 반복
result
65. 22 74 42 2 17 7 69 33
삽입 정렬
74 22 42 2 17 7 69 33before
after
1. 두 번째 리스트를 첫 번째 리스트와 비교하여 적절한 위치에 삽입한다.
66. 22 42 74 2 17 7 69 33
삽입 정렬
74 22 42 2 17 7 69 33before
after
2. 리스트의 끝까지 삽입한다.
67. 데이터를 대소 그룹 둘로 나누어 분해한 후 전체를 정렬하는 방식의
알고리즘 이다.
퀵 정렬
68. 퀵 정렬
5 4 7 6 8 3 1 2 9
리스트의 첫번째를 기준값으로 설정한다.
69. 5 4 7 6 8 3 1 2 9
3 1 4 2 5 8 6 7 9
퀵 정렬
기준값보다 작은 경우
기준값의 앞에 배치
기준값보다 큰 경우
기준값의 뒤에 배치
70. 3 4 2 1
2 1 3 4
퀵 정렬
위치가 정해짐. 더 정렬할 대상이 없다.
기준값보다 작은 경우의 수 정렬
72. 8 6 7 9
7 6 8 9
퀵 정렬
위치가 정해짐. 더 정렬할 대상이 없다.
기준값보다 큰 경우의 수 정렬
73. 7 6
6 7
퀵 정렬
위치가 정해짐.더 정렬할 대상이 없다.
기준 값을 선택한 후 그보다 작은 그룹과 큰 그룹으로 나눈다는 과
정을 반복함으로써 정렬하는 알고리즘이다.
75. 2 - 소수
3 - 소수
4 - 2로 나눌수 있다.( = 2 X 2 )
5 - 소수
6 - 2와 3으로 나눌 수 있다. ( = 2 X 3 또는 3 X 2 )
7 - 소수
8 - 2와 4로 나눌 수 있다. ( = 2 X 4 또는 4 X 2 )
9 - 3으로 나눌 수 있다. ( = 3 X 3 )
10 - 2와 5로 나눌 수 있다. ( = 2 X 5 또는 5 X 2 )
에라토스테네스의 체
소수는 2 이상의 정수에서 1 과 그 수 자체로만 나눌 수 있는 수다.
76. 에라토스테네스의 체
ex) 100 이하의 소수 찾기
1 ) 2 이외 2의 배수를 모두 지운다.
2) 3 이외 3의 배수를 모두 지운다.
3) 5 이외 5의 배수를 모두 지운다.
4) 7 이외 7의 배수를 모두 지운다.
> 남아있는 수가 소수.