Bubble Sort
·
📚 Data Architect/Algorithm
💡 버블 정렬 (Bubble Sort) 데이터의 인접 요소의 크기를 비교하고, swap 연산을 수행하며 정렬하는 방식 시간복잡도는 O(n2)으로 굉장히 느린편이다. 보통 loop를 돌면서 인접한 데이터 간의 swap 연산으로 정렬한다. 과정 비교 연산이 필요한 경우 loop 범위를 설정한다. 인접한 데이터 값을 비교한다. swap 조건에 부합하면 swap 연산을 수행한다. loop가 끝날때까지 2~3을 반복한다 정렬 영역을 설정한다, 다음 loop를 실행할 때는 이 영역을 제외한다. 비교 대상이 없을 때까지 1~5를 반복한다. 만약 특정 loop의 전체 영역에서 swap이 발생하지 않으면, 정렬이 됬다는 의미이므로 프로세스를 종료해도 된다. 버블정렬을 이용한 N개의 수 오름차순 정렬 sort()를 이용하..
DFS & BFS 구현
·
📚 Data Architect/Algorithm
💡 DFS Depth-First Search의 약자이며 깊이 우선 탐색을 하는 알고리즘이다. 동작방식 스택을 이용하므로 재귀를 이용했을때 간결한 구현이 가능하며 시간복잡도는 O(N)이다. 탐색 시작 노드에 스택일 삽입하고 방문 처리한다. 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣어 방문 처리하고, 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다. 위의 과정을 더 이상 수행할 수 없을 때까지 반복한다. 방문처리란? 스택에 한번 삽입되어 처리된 노드가 다시 삽입되지 않게 체크하는 것을 의미한다. 이를 통해 각 노드를 한 번씩만 처리할 수 있다. 재귀 함수를 이용한 DFS 구현 노드들은 호출을 받으면 하위의 노드를 재귀 호출 하기 전, 자기 자신을 출력한..
Stack & Queue 구현
·
📚 Data Architect/Algorithm
💡 ArrayList로 스택 구현 public class Implementation_Stack { private ArrayList listStack = new ArrayList(); public void push(Integer data) { listStack.add(data); } public Integer pop() { if (listStack.size() == 0) { return null; } else { return listStack.remove(listStack.size()-1); } } public int size() { return listStack.size(); } public Integer peek() { if (listStack.size() == 0) { return null; } el..