정글에서 온 개발자
알고리즘과 자료구조의 정의 본문
알고리즘
- 어떤 값이나 집합을 입력으로 받아 또 다른 값이나 값의 집합을 출력하는 잘 정의된 계산 절차
- 잘 정의된 계산 문제를 풀기 위한 도구
- 계산 문제를 정의하려면 입력과 출력의 관계를 잘 서술해야 한다.
- 어떤문제의 사례는 그 문제의 해를 계산하기 위해 필요한 입력으로 구성되며 문제의 정의에서 요구하는 입력에 대한 제약조건을 만족해야 한다.
- 알고리즘이 모든 입력 사례에 대해 항상 올바른 출력을 내고 종료할 경우 이를 타당(correct)하다고 한다.
- 타당한 알고리즘이 계산 문제를 푼다(solve)고 말한다.
- 타당하지 않은 알고리즘도 오류의 비율을 조절할 수 있으면 유용할 때가 있다.
- 알고리즘에 대한 지식과 기술을 얼마나 알차게 학습했느냐가 숙련된 프로그래머와 초보자를 구분하는 기준이 될 수 있다.
알고리즘 문제의 두 가지 특징:
- 후보해는 많지만 대부분이 문제의 해가 아니다.
- 최상의 해 를 찾는 것은 도전적인 일이다.
- 실용적인 응용 예가 있다.
자료구조
- 자료를 편리하게 접근하고 변경하기 위해 자료를 저장하거나 조작하는 방법
- 모든 목적에 가장 맞는 단일 자료 구조는 없다.
+ 좋은 정렬 알고리즘
- 정렬 대상이 몇 개인지, 어느 정도까지 정렬됐는지, 정렬 대상의 값에 어떤 제약이 있는지, 컴퓨터 구조는 어떠한지, 이용되는 저장 장치가 무엇인지에 따라 달라진다.
출처
Introduction to algorithm, 3rd edition
'정리' 카테고리의 다른 글
주요 정렬 요약(8+2) (0) | 2023.10.18 |
---|---|
알고리즘의 분석 (0) | 2023.10.17 |
파이썬 ‘=’ 이 연산자가 아니다 논란과 주의할 점 (0) | 2023.10.16 |
소수 구하기의 여러가지 방법과 시간복잡도 비교 (0) | 2023.10.16 |
음수에서의 모듈러 연산 (0) | 2023.10.15 |