자료구조와 알고리즘
자료구조
: 컴퓨터에서 자료를 정리하고 조직화하는 다양한 구조알고리즘
: 컴퓨터에서 문제를 해결하기 위한 절차적 단계- 프로그램 = 자료구조 + 알고리즘
알고리즘의 조건
입력(Input)
: 0개 이상의 입력이 존재해야 한다.출력(Output)
: 1개 이상의 출력이 존재해야 한다.명백성(Definiteness)
: 각 명령어의 의미는 모호하지 않고 명확해야 한다.유한성(Finiteness)
: 한정된 수의 단계 후에는 반드시 종료되어야 한다.유효성(Effectiveness)
: 각 명령어들은 실행 가능한 연산이어야 한다.
알고리즘 기술 방법
자연어
- 장점 : 읽기 쉽다.
- 단점 : 의미 전달이 모호하다.
흐름도(flow chart)
- 장점 : 직관적이고 이해하기 쉽다
- 단점 : 알고리즘이 복잡해지면 이해하기 어렵다.
유사코드
- 알고리즘 기술에 가장 많이 사용
- 알고리즘 고수준 기술 방법
- 자연어보다 더 구조적
- 프로그래밍 언어보다는 덜 구체적
- 알고리즘의 핵심적인 내용에만 집중
추상 자료형
자료형
기초 자료형
: char, int, float , double파생 자료형
: 배열, 포인터사용자 정의 자료형
: 구조체, 공용체, 열거형복잡한 자료형
: 스택, 큐- 연산은 함수로 작성
추상화
- 어떤 시스템의 간략화된 기술 또는 명세
- 중요한 정보만 강조, 나머지 구현 세부 사항 제거 → 정보은닉 기법 → 추상 자료형의 개념
추상 자료형(ADT)
- 데이터의 집합과 연산들의 집합의 추상적 명세
- 구현으로부터 분리된 자료형을 의미
- 자료나 연산이 무엇인지를 정의하나 어떻게 구현할 것인지는 정의하지 않음
- 자료나 연산이 무엇인지를 정의하나 어떻게 구현할 것인지는 정의하지 않음
- 추상 자료형이 표현 : 데이터를 정의하고 연산들을 정의
- 데이터는 집합의 개념을 표현
- 연산의 정의에는 연산 이름, 매개변수, 연산의 결과, 연산이 수행하는 기능을 기술
- 추상 자료형(객체) = 객체 + 연산
객체
: 추상 데이터 타입에 속하는 객체가 정의연산
: 객체들 사이의 연산이 정의 → 객체와 외부를 연결하는 인터페이스 역할추상 자료형
- 예시