[Java] 알고리즘과 자료구조
알고리즘이란?
수학, 컴퓨터 등에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태를 표현한 것입니다.
도서관으로 비유를 해보면 만화책, 전공, 소설 등 종류가 많은데 같은 종류끼리 저장이 되어있습니다.
-
알고리즘 : 정신없이 섞여있던 책들을 오름차순으로 정리할것인가 내림차순으로 정리할것인가 고민하는 것
-
자료구조 : 내가 정한 알고리즘으로 데이터를 저장하는 과정
{ 8, 7, 4, 5, 3 }
순서가 정리되어있지 않은 배열이 있다고 가정한다면, 수행시간에 대해 비교를 해보도록 하겠습니다.
import java.util.Arrays;
public class RunTimeCheck2 {
public static void main(String[] args) {
int [] nums = {8,7,4,5,3};
// 알고리즘을 사용하지 않고 코드가 수행하는 시간을 계산한다.
// nanoTime : 경과하는 시간을 측정
long before = System.nanoTime();
System.out.println("일반 코드 수행 시간 : " + before + " nanoseconds");
// sort : 오름차순으로 정렬한다.
//arrays : 배열을 조작하기 위한 메서드를 가지고 있다.
Arrays.sort(nums);
System.out.println("오름차순 정렬: " + Arrays.toString(nums));
// 알고리즘을 사용하여 코드가 수행하는 시간을 계산한다.
long after = System.nanoTime();
System.out.println("알고리즘 코드 수행 시간 : " + after + " nanoseconds");
System.out.println();
System.out.println("수행 시간의 차이: " + (after - before) + "nanoscconds");
}
}
결과를 보게 되면 오름차순 정렬이 되어있는 배열이 시간이 빠른 것을 보실 수 있습니다.
속도가 빠르게 되면 데이터 베이스에서 검색할 때 좋기 때문에 알고리즘이 필요하다는 것을 알게되었습니다.
섞여있는 것을 오름차순으로 바꿔주는 방법 = 알고리즘
알고리즘을 통해서 오름차순이 된 자료 = 자료구조
알고리즘 종류
알고리즘의에는 정렬방법과 탐색방법 두가지가 있습니다.
정렬
선택정렬, 버블정렬, 삽입정렬, 합병정렬, 퀵정렬
탐색
순차탐색, 이진탐색
Entity(엔터티)
알고리즘을 공부하던 중 엔터티라는 내용이 살짝 언급되었습니다.
엔터티란?
검색해보면, 실제 라고 나옵니다 즉 객체라고 생각하시면 좋을것 같습니다.
오브젝트와, 인스턴스 두가지가 섞여있는 공간에서 의미를 부여하고, 작성한 것을 Entity(엔터티)라고 합니다.
-
엔터티는 사람, 장소, 물건, 사건, 개념 등과 같은 명사
-
엔터티는 저장 되기위한 어떤 것
-
엔터티는 실제로 사용해야될 데이터를 보관하는 것
-
엔터티는 데이터베이스에서 가져온 데이터를 객체로 표현한 것
이런 데이터 베이스에서
id와 name을 사용하기 위해서 가져왔다면, id와 name은 Entity(엔터티)라고 할 수 있습니다.
댓글남기기