학습/자료구조

버블 정렬의 핵심 이론 버블 정렬(bubble sort)은 두 인접한 데이터의 크기를 비교해 정렬하는 방법이다. 간단하게 구현할 순 있지만, 시간 복잡도는 O(n²)으로 다른 정렬 알고리즘보다 속도가 느린 편이다. 수행 방식 비교 연산이 필요한 루프 범위를 설정한다. 인접한 데이터 값을 비교한다. swap 조건에 부합하면 swap 연산을 수행한다. 루프 범위가 끝날 때까지 2~3을 반복한다. 정렬 영역을 설정한다. 다음 루프를 실행할 때는 이 영역을 제외한다. 비교 대상이 없을 때까지 1~5를 반복한다. 만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 영역 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 된다.
정렬 알고리즘 정의 정렬 알고리즘 정의 버블(bubble) 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 선택(selection) 대상에서 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식 삽입(insertion) 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식 퀵(quick) pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식 병합(merge) 이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식 기수(radix) 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식
1. Stack(스택)스택은 삽입과 삭제 연산이 후입선출(LIFO : Last-in first-out)로 이뤄지는 자료구조이다. 후입선출은 삽입과 삭제가 한 쪽에서만 일어나는 특징이 있다. 스택 용어위치top : 삽입과 삭제가 일어나는 위치연산push : top 위치에 새로운 데이터를 삽입하는 연산pop : top 위치에 현재 있는 데이터를 삭제하고 확인하는 연산peek : top 위치에 현재 있는 데이터를 단순 확인하는 연산스택은 깊이 우선 탐색(DFS : Depth First Search), 백트래킹 종류의 코딩 테스트에 효과적이므로 반드시 알아 두어야 한다. 후입선출은 개념 자체가 재귀 함수 알고리즘 원리와 일맥상통하기 때문이다. 2. Queue(큐)큐는 삽입과 삭제 연산이 선입선출(FIFO : F..
구간 합 구간 합은 합 배열을 이용하여 시간 복잡도를 더 줄이기 위해 사용하는 특수한 목적의 알고리즘이다. 코딩 테스트에서 사용 빈도가 높으니 꼭 알아두자. 구간 합의 핵심 이론 구간 합 알고리즘을 활용하려면 먼저 합 배열을 구해야 한다. 배열 A가 있을 때 합 배열 S는 다음과 같이 정의한다. S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] // A[0]부터 A[i]까지의 합 합 배열은 기존의 배열을 전처리한 배열이라 생각하면 된다. 이렇게 합 배열을 미리 구해놓으면 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 O(n)에서 O(1)로 감소한다. 합 배열을 만드는 공식은 다음과 같다. S[i] = S[i - 1] + A[i] i에서 j까지 구간 합을 구하는 공..
1. Array(배열): 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 배열의 값은 인덱스를 통해 참조할 수 있으며, 선언한 자료형의 값만 저장할 수 있다. 특징인덱스를 사용하여 값에 바로 접근할 수 있다.새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다.배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다.구조가 간단하므로 코딩 테스트에서 많이 사용한다.  2. List(리스트): 값과 포인터를 묶은 노드라는 것을 포인터로 연결한 자료구조 특징인덱스가 없으므로 값에 접근하려면 Head 포인터부터 순서대로 접근해야 한다. 다시 말해 값에 접근하는 속도가 느리다..
>>>>>>> 소스코드.git 조합이란? n개의 값 중에서 r개의 숫자를 순서를 고려하지 않고 나열한 경우의 수이다. 예를 들어서 [1, 2, 3] 배열에서 2개의 수로 만들어지는 경우의 수를 구하라고 하면 [1, 2] [1, 3] [2, 3] 이렇게 나온다. 순열에에서 나오는 [2, 1], [3, 1], [3, 2]는 중복되므로 제외 대상이다. 구현하는 방법은 여러가지가 있겠지만, 여기서 핵심은 주어진 배열의 처음부터 끝까지 순회하면서 해당 인덱스의 값을 선택했을 경우 / 선택하지 않았을 경우 이렇게 두 가지로 나눠 모든 경우를 탐색하는 완전 탐색을 해주면 된다. 소스 코드 검색해보니 제일 잘 나와있는 대표적인 구현 방법 두 가지를 설명할 것이다. 1. 백트래킹을 이용한 구현 private void c..
태기
'학습/자료구조' 카테고리의 글 목록 (2 Page)