자료구조 란.. 자료를 효율적으로 표현하고 저장하고 처리할수 있도록 정리하는 것 입니다.
자료구조의 종류 (4가지)
정수, 실수, 문자, 문자열과 같은 데이터 타입에 해당하는 단순구조
자료들 사이게 관계가 있는 1대1 구조인 선형 구조
1:다 또는 다:다 구조인 비선형 구조
파일 구조 등 이렇게 크게 4가지로 나뉘어 볼 수 있습니다.
컴퓨터 내부에서 표현할 수 있는 자료에는 수치 자료, 문자 자료, 문자열 자료, 논리 자료, 포인터 자료 등이 있습니다.
수치 자료 : 컴퓨터 에서 쓰는 2진수(1,0) 를 사람이 쓰는 10진수로 쉽게 해석할 수 있도록 만든 존 형식과 팩 형식이 있습니다.
문자 자료 : 컴퓨터 내부에서는 문자 자료도 1과 0의 2진수 조합으로 표현 가능한데 문자에 대한 2진 코드를 정의해 놓은 문자 코드 가 있습니다. 주로 사용하는 코드는 BCD코드, EBCDIC코드, ASCII 코드, 그리고 유니코드 등 이 있습니다.
논리 자료 : 논리값을 표현하기 위한 자료 형식으로 논리값이란 참 과 거짓 중 하나를 표시한 값을 말합니다.
포인터 자료 : 메모리 주소를 표현하기 위한 자료 형식으로 자료를 저장하고 있는 변수나 특정 위치의 메모리 주소를 저장하며, 주소 연산을 할 때 사용합니다. 포인터 자료를 사용하면 복잡한 자료주고 연산을 메로리 에서의 주소 연산만으로 처리 할 수 있습니다.
문자열 자료 : 한 글자만 표현한 수 있는 문자 자료와 달리 여러 글자로 이루어진 문자 그룹을 하나의 자료로 취급하여 메모리에 연속적으로 저장하는 자료 형식 입니다.
자료 추상화(Data Abstraction) : 자세하고 복잡한 것 대신 필수적이고 중요한 특징만 골라서 단순화 시키는 작업을 뜻합니다.
자료 추상화에 이용하는 기본 개념에는 자료, 연산, 자료형이 있습니다.
알고리즘: 주어진 문제를 해결하는 방법을 추상화 하여 일련의 단계적 절차를 논리적으로 기술해 놓은 명세서 입니다.
자연어를 아용한 서술적 표현 : 알고리즘을 사람이 쓰는 자연어로 표현하는 방법 입니다. 자연어는 서술적인 뿐만 아니라 쓰는 사람에 따라 일관성이나 명확성을 유지하기 어렵기 때문에 쉽게 이해하고 쓸 수 있어야 하는 알고리즘을 표현하는 데는 한계가 있습니다.
순서도를 이용한 도식화 : 알고리즘은 순서도 로 작성하는 규칙에 따라 도식화 하는 방법이니다. 순서도 를 이용하면 명령의 흐름을 쉽게 파악할 수 있지만 복잡한 알고리즘을 표현하는 데는 한계가 있습니다.
프로그래밍 언어를 이용한 구체화 : 알고리즘을 프로그래밍 언어를 사용하여 표현하는 방법 입니다. 이 방법을 사용하면 알고리즘 자체가 구체화되므로 추가로 구체화 작업을 할 필요가 없지만 특정한 프로그래밍 언어로 작성하기 때문에 해당 언어를 모르면 이해하기 어렵습니다.
가상코드를 이용한 추상화 : 알고리즘을 프로그래일 언어로 표현했을 때 생기는 단점을 보완한 방법입니다. 특정 프로그래밍 언어는 아니지만 프로그래밍 언어의 형태를 갖춘 가상코드를 사용하여 알고리즘을 표현합니다.
알고리즘의 성능 분석은 일반적으로 실행에 필요한 공간 측면에서 분석하는 공간 복잡도와 실행에 소요되는 시간 측면에서 분석하는 시간 복잡도를 추정하여 평가 할수 있습니다.
공간 복잡도 : 알고리즘을 프로그램으로 실행하여 완료하는 데까지 필요한 총 저장 공간을 의미합니다.
시간 복잡도 : 알고리즘을 프로그램으로 실행하여 완료하는 데까지 소요되는 시간입니다.
시간 복잡도 표기법에는 빅-오 표기법, 빅-오메가 표기법, 빅-세타 표기법이 있습니다.
빅-오 표기법 : O(f(n))과 같이 표기하며, "Big Oh of f(n)"으로 읽습니다. 함수의 상한을 나타내기 위한 표기법 입니다.
빅-오메가 표기법 : "Big Omega of f(n)"으로 읽으며 함수의 하한을 나타내기 위한 표기법 입니다.
빅-세타 표기법 : "Big Theta of f(n)"으로 읽으며 상한과 하한이 같은 정확한 차수를 표현하기 위한 표기법 입니다.