본문 바로가기

Basic/자료구조,알고리즘

자료구조와 알고리즘

반응형


1.  자료구조란(Data Structure)?


1) 데이터를 저장(표현)하는 방법이다.


2) 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키는 방법이다.


3) 자료를 효율적으로 사용하기 위해서, 자료의 특성에 따라 분류하여 구성,저장하는 방법을 의미.


만약에 집에 책이 2~3권있는데 책 한권을 찾는다고 하면 금방 찾을것이다.


하지만 수천권의 책이 있다고 하자 금방 찾을수 있는가? 그래서 자료구조가 필요하다.


Data를 책으로 비유하고, Structure를 책꽃이로 비유해보자. 책꽃이라는 구조 책을 가나다라


순으로 책들을 정리한다면 책이라는 data를 훨씬 찾기 쉬울것이다. 


이렇게 많은 양의 데이터를 효율적으로 관리하기 위한 것이 자료구조이다.




2.  자료구조의 종류 


- 가장 간단한 배열도 자료구조의 한 종류로서 각각의 자료를 순서대로 저장하는 간단한 구조.


- 자료구조를 공부할때는 선형구조와 비선형구조를 주로 다룬다.





1) 단순 구조

- 정수, 실수, 문자, 문자열 등 자료의 형태.



2) 선형 구조(Linear Data Structure)

- 자료를 저장하는 방식이 선의 형태로 나란히 혹은 일렬로 저장하는 방식. 

- 데이터를 저장할 때 연속적인 기억공간에 배정하는 자료구조.

- 자료 간의 연결 관계가 [1:1] 관계를 가지는 형태로 자료들이 긴 선처럼 연결되어 있는 구조.



3) 비선형구조(Non-linear Data Structure)

- 데이터를 일렬로 저장하지 않는 구조.

- 자료 간의 연결 관계가 [하나 : 여러 개] 또는 [여러 개 : 여러 개] 의 관계를 가지는 형태로, 

 나뭇가지 모양이나 그물 모양 처럼 얽혀 있는 구조.



4) 파일구조

- 파일도 데이터를 저장하는 도구이기 때문에 파일의 구조도 자료구조에 포함.

- mp3 같은 음악 파일도 알기 쉬운 예이다.




3. 알고리즘(Algorithm)이란?


- 위와같이 저장된 데이터들을 어떠한 목적을 위해 처리(연산)하는것이다.


- 저장된 데이터들을 대상으로 하는 "문제의 해결방법" 을 뜻한다.



4. 자료구와 알고리즘의 관계 - 둘은 아주 밀접한 관계를 가진다.


1) 프로그램은 데이터를 저장(자료구조)하고, 그렇게 저장된 데이터를 처리(연산) 하는것(알고리즘)이다.


2) 알고리즘이 특정한 목적을 달성하기 위한 절차라고 한다면 자료구조는 알고리즘에 필요한 데이터의 집합이다.


3) 자료구조가 결정이 되어야 그에 따른 알고리즘을 정의하고 개발할 수 있다.


4) 자료구조에 따라 알고리즘이 달라진다.


5) 그래서 알고리즘은 자료구조에 의존적이라고 할수 있다.



5. 자료구조와 알고리즘 기능 구현 

- 정수 1부터 10까지의 합을 구해보자  - > 목적,문제에 해당


https://github.com/ytw9699/Algorithm-DataStructure/blob/master/src/Basic_DataStructure/Array/a01_array_sum.java


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class a01_array_sum {
    
public static void main(String[] args) {
        
        int [] arr = {1,2,3,4,5,6,7,8,9,10};//배열도 자료구조 1~10까지의 정수를 저장
 
        int sum = 0;
        
        for(int i=0; i<10; i++//for문을 이용, 1~10까지의 합을 구하는 알고리즘
            sum = sum + arr[i];
        
        System.out.println(sum);//55 출력
    }
}
cs


배열이라는 자료구조를 이용하여 정수를 저장하고, 1~10까지의 합(목적)을 구하는 알고리즘을 구현


(처리,연산,문제해결)해 보았다. 이렇게 값이 저장된 자료구조가 배열이 아니었다면 


알고리즘도 반복문과 인덱스 값을 사용하지 않았을 것이다.


그래서 알고리즘은 자료구조에 따라 달라질 수 있고, 둘을 매우 밀접한 관계를 가진다.



반응형

'Basic > 자료구조,알고리즘' 카테고리의 다른 글

재귀의 활용(피보나치 수열)  (0) 2018.11.28
재귀의 활용(피보나치 수열)  (0) 2018.11.28
재귀(Recursive)  (0) 2018.11.28
재귀(Recursion)  (0) 2018.11.28
성능분석 방법(빅오 표기법)  (0) 2018.11.27