자료구조(1) - 자료구조와 알고리즘
● 자료와 정보
- 자료 : 현실세계로 부터 관찰이나 측정을 통해 수집된 사실이나 값.
숫자로 표현되는 수치, 문자로 구성되는 (String)을 포함
- 정보 : 어떤 상황에 대한 적절한 의사결정을 할 수 있게 하는 데이터의 유효한 해석, 상호관계.
자료가 의도된 프로그램에 따라 처리되어 발생하는 결과
● 자료구조
- 자료구조 : 자료 사이에 존재하는 관계를 개념적으로 정의한 것.
: 자료를 효율적으로 이용할 수 있도록 자료의 특성에 따라 분류, 구성 , 저장, 처리하는 모든 작업
- 선형구조 : 연속적인 기억공간에 데이터를 저장하는 자료구조.
: 배열, 스택, 큐, 데크, 연결리스트 ... etc
- 비선형구조 : 기억 공간내의 위치와 별개로 독릭하여 저장하는 구조
: 트리, 그래프 ... etc
- 데이터의 양
데이터를 사용하는 방법, 횟수
데이터의 정적, 동적 특성
데이터 구조에 의해 요구되는 기억장치의 양
등을 고려해야 한다.
● 알고리즘
- 알고리즘 : 특정한 일을 수행하는 명령어드르이 유한집합
: 주어진 문제를 해결하기위한 수행과정을 논리적으로 표현
- 요구조건 : 외부로부터 입력 0개 이상
: 출력이 최소 1개 이상 ( 최소 1개 이상이어야 True / False 검증 가능 )
: 명확성 / 명확하고 모호하지 않아야 함
: 유한성 / 어떤 경우에도 한정된 수의 단계 이후에는 종료해야 한다.
: 유효성 / 알고리즘을 구성하는 명령문들은 하드웨어에서 실행가능해야 한다.
- 알고리즘을 선정하는 조건
: 특정 언어의 특성을 고려하지 않고, 작성할 수 있어야 한다.
: 문제를 해결할때 기존 기법을 사용하고 의존할 수 있어야 한다.
- 알고리즘을 기술하는 방법
: 자연어 사용, 흐름도 사용, 의사코드(pseudo-code) 사용
: 자연어를 이용한 방법은 의미전달이 모호해질 우려가 있음
: 흐름도를 이용한 방법은 직관적이고 이해하기 쉬우나, 복잡한 알고리즘의 표현이 어려움
: 의사코드로 표현된 알고리즘은 자연어보다는 더 구조적인 표현이 가능, 프로그래밍 언어로의 변환이 용이
● 의사코드
: 주어진 리스트에서 가장 큰 값을 찾는 알고리즘이다.
procedure max ( x : integers, a1, a2, ..., an : distinct integers)
v : a1
for i =2 to n
if ai > v then b = ai
return v