좋은 알고리즘이란?
1) 남도 알기 쉬워야 하며
2) 짧은 시간에 올바른 결과를 도출할 수 있어야 하며
3) 프로그램을 실행할때 사용하는 메모리의 영역이 작아야 하고
4) 재이용하기 쉬워야 한다.
알고리즘의 종류
1. 선형탐색 (Linear-search)
맨앞부터 순서대로 찾기
2. 이분(이진)탐색 (Binary-search)
범위를 절반씩 추려가면서 찾기
3. 해시 탐색법
계산해서 저장위치 찾기
4. 정렬
단순정렬 ⇒ 최솟(댓)값 선택 맨 앞부터 순서
단순교환 ⇒ 옆 데이터와 교환
단순삽입 ⇒ 데어터 올바른 위치에 삽입하면서 자리 바꿈
퀵 정렬 ⇒ 기준데이터 기반으로 대소분할 반복 자리 바꿔서 나열
머지 정렬 ⇒ 이분할과 머지(병합)을 이용하여 나열
힙 정렬 ⇒ 힙이라는 데이터 구조 이용 나열
셸 정렬 ⇒ 그룹을 나누면서 자리 바꿔 나열
5. 수치 계산(해석)
에라토스테네스의 체(그물망) ⇒ 소수를 구하는 알고리즘
유클리드 알고리즘 ⇒ 최대 공약수를 구하는 알고리즘
가우스 소거법 ⇒ 연립 1차 방정식
사다리꼴 법칙 ⇒ 정적분 근사값
다익스트라 알고리즘 ⇒ 그래프에서 최적 경로
이분법 ⇒ 방정식
뉴턴법(뉴턴 랩슨법) ⇒ 방정식
6. 문자열 탐색
무차별 검색법(브루트 포스 검색법) ⇒ 맨 앞부터 한문자씩 탐색
KMP(커누스-모리스-프랫) ⇒ 불일치 부분에 착목 탐색
BM(보이어-무어) ⇒ 부분 문자열의 끝에서부터 탐색