알고리즘 2

배열과 연결리스트

배열 배열은 메모리에 지정된 만큼의 연속된 저장 공간을 선점하여 사용하는 저장 방식입니다. int[] grade = new grade {85, 65, 90}; 그림 처럼, 변수는 배열의 시작 주소를 가리키고있고, int배열이기 때문에 4Byte씩 공간을 차지하고 있습니다. 순서대로 저장되어 있기 때문에, 특정 위치의 데이터를 찾는데 1번의 연산이면 됩니다. 1번째의 데이터를 찾고 싶다면 0x10번지에서 4Byte만큼 읽음 2번째의 데이터를 찾고 싶다면 0x10번지 + 1 * 4(int 크기) = 0x14번지로 이동하여, 4Byte만큼 읽음 3번째의 데이터를 찾고 싶다면 0x10번지 + 2 * 4(int 크기) = 0x18번지로 이동하여, 4Byte만큼 읽음 이 처럼 원하는 데이터로 접근 하는데 1번의 연..

알고리즘 2022.01.16

Big-O 표기법과 복잡도

Big-0 표기법 빅오 표기법은 수리과학 분야에서 특정 함수의 증감 추세를 비교하는 표기법으로, 아래와 같은 형식으로 복잡도를 표현합니다. O(n), O(n log n) 이 표기법은 알고르즘의 성능을 평가하는데도 자주 사용됩니다. 알고리즘의 성능은 시간복잡도와 공간복잡도를 기준으로 효율적인지 비효율적인지 평가합니다. 시간복잡도 시간복잡도는 간단히 말해서, 연산 횟수라고 볼 수 있습니다. 위는 여러 알고리즘의 시간복잡도를 빅오 표기법으로 표현하여 복잡도가 증가하는 속도를 비교한 그래프 입니다. 가로축은 확인해야할 경우의 수(Elements), 세로축은 연산 횟수(Operations)인데요. 확인해야할 경우의 수를 n이라고 가정했을때, 각 알고리즘별 복잡도 증가 횟수를 알 수 있습니다. 가장 최악의 복잡도를..

알고리즘 2022.01.16