//자료구조란?//데이터를 표현하는 방법 및 구조
자료에 대한 처리를 효율적으로 수행할 수있도록 자료를 구분하여 표현하는 것
역할 : 프로그래밍에서 가장 기초적인 학문 분야
->프로그램의 기본 골격 - 효율적이고 안전하게 동작하기 위해서 반드시 필요함
->프로그램 개발과정과 건물 건축하는 과정과 유사
BUT, 프로그램의 크기가 작은 경우, 대형 프로젝트의 초기 단계 -> 구조적인 결함 발생
목적: 자료구조는 컴퓨터의 자료를 효율적으로 저장하고, 관리하기 위해 사용한다.
사용하는 이유? 메모리를 절약하고 프로그램 수행(실행) 시간을 단축을 목적으로 사용된다.
프로그램의 수행시간 혹은 저장 공간을 고려한 자료구조의 설계
->프로그램이 어떻게 사용되는지에 따라 결정(목적 및 기능에 적합한 자료구조 설계)
(예) 윈도우 탐색기(트리, 리스트), 사전 프로그램(검색)
윈도우 탐색기 ->(명령) 파일 및 폴더의 게층 구조 정보 / (자료)파일의복사, 이동 및 삭제
전자사전 -> 단어의 철자 및 의미 /단어 검색
//자료구조의 선택 기준//
자료의 처리 시간
자료의 크기
자료의 활용 빈도
자료의 갱신 정도
프로그램의 용이성
//자료구조의 특징//
효율성 : 상황에 맞는 알고리즘을 사용하여 자료를 구조화 시켜 데이터 처리의 효율을 높일수있음.
추상화 : 복잡한 자료, 모듈, 시스템 등으로부터 해심적인 개념 or 기능을 간추려내는 것.
재사용성 : 자료구조를 설계 할 때 특정 프로그램에 맞추어 설계하는 것이 아닌 다양한 프로그램에서도 사용할 수있도록 되어있음.
//자료구조의 분류//
[자료의 형태에 따른 분류]
단순 구조
프로그래밍 언어에서 제공하는 기본적인 자료형을 말한다.
(예) 정수(int), 실수(float), 문자(char)와 문자열(string) 등
선형 구조
자료들 사이의 앞뒤 관계가 일대일(1:1)인 경우를 선형 구조라고 한다.
(예) 리스트(LIST), 스택(STACK), 큐(QUEUE)와 덱(DEQUE) 등
비선형
다음 그림과 같이 자료들 사이의 앞뒤 관계가 계층 구조 혹은 망 구조를 가지는 경우를 비선형 구조라고 한다. 선형구조와 달리 1:1관계가 아니고 1 : 다수의 구조를 가지고있다.
(예) 트리(TREE), 그래프 등
파일 구조
보조기억장치(하드디스크)에 저장되는 파일에 대한 자료구조
*자료구조를 이용하는 사용자의 관점*
->자료구조의 내부 구현 소스에 대한 분석 없이 신속하게 자료구조를 이용가능
(예) 이름, 입력, 출력
*자료구조를 공급하는 개발자 관점*
->자료구조를 구현하기 전에 설계도를 미리 그려보는 것
->자료구조의 개발자와 사용자 사이의 간섭 문제가 해결
//알고리즘//
문제 해결 절차를 체계적으로 기술한 것을 알고리즘이라고 한다.
넓은 의미 ; 자료구조와 함께 컴퓨터 프로그램을 구성하는 한가지 요소
-> 컴퓨터의 명령어들의 집함
좁은 의미 : 어떠한 문제를 해결하기 위한 절차
(예) 1부터 100까지 합을 구하는 문제
알고리즘의 조건
- 입력 - 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재한다.
- 출력 - 알고리즘은 최소 1개 이상의 결과를 가진다.
- 명확성 - 알고리즘의 각 단계는 명확하여 애매함이 없어야 한다.
- 유한성 - 알고리즘은 단계들을 유한한 횟수로 거친 후 문제를 해결하고 종료해야 한다. 알고리즘의 한 단계 이후 m의 값은 n 보다 작으며, m!=0이면 n의 값은 다음 번 단계에서 줄어든다.
- 효과성 - 알고리즘의 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 정확하게 수행할 수 있을 정도로 충분히 단순해야 한다.
알고리즘의 표현
언어 |
내용 |
특성 |
자연어 |
사람이 사용하는 일반적인 언어 표현 |
알고리즘 표현으로 부적절 ->기술하는 사람에 따라 일관성과 명확성이 달라짐 |
순서도 |
알고리즘을 그림으로 도식화해서 표현 |
장점: 알고리즘 각단계를 직관적으로 표현 단점 : 복잡한 알고리즘을 나타내기에는 비효율적 |
의사코드 |
특정 프로그래밍 언어가 아닌 가상의 언어로 표현 |
프로그래밍 언어보다는 덜 엄격한 문법이나, 자연어 보다는 더 체계적으로 기술이 가능,자료구조/알고리즘 책마다 구문에 차이가 있음 유사코드 or 슈도 코드라 불림 |
프로그래밍 언어 |
C와 같은 프로그래밍 언어로 표현 |
장점: 추가 구현 단계가 필요없음(알고리즘을 구현 소스를 통해 나타내기 때문) 단점 : 너무 엄격하게 기술하여 비효율적인 경구가 있다. |
//알고리즘과 자료구조의 관계
자료구조를 구현하기 위해서는 알고리즘이 필요하다. 즉, 알고리즘의 성능은 자료구조에 종속되어 있다.
->어떻게 표현되고 저장되느냐에 따라 사용 가능한 알고리즘이 달라짐
자료구조의 기본적인 연산을 구현하기 위해서 알고리즘을 사용함
*자료구조 : 데이터를 표현하고 저장하는 방법
*알고리즘 : 문제 해결 방법
'PROGRAMING📚 > 자료구조📑' 카테고리의 다른 글
알고리즘의 성능 분석 (0) | 2019.12.23 |
---|---|
추상 데이터 타입 (0) | 2019.12.22 |
이진트리와 재귀함수 사용 (0) | 2019.02.13 |
포인터를 이용해서 연결리스트 구현하기 (0) | 2019.02.13 |
스택을 이용하여 데이터 입,출력 구현 (0) | 2019.02.13 |
댓글