목록IT/Algorithms (5)
꾸준히 기록하자
삽입 정렬(Insertion Sort)은 정렬 알고리즘 중 하나로, 배열을 정렬된 부분과 정렬되지 않은 부분으로 나누어 처리합니다.배열의 요소를 하나씩 꺼내서 이미 정렬된 부분에서 적절한 위치에 삽입하는 방식으로 동작합니다. 삽입 정렬의 동작 과정입니다.배열의 첫 번째 요소는 이미 정렬된 상태로 간주합니다.두 번째 요소부터 순차적으로 선택해, 그 요소가 정렬된 부분에서 올바른 위치에 삽입될 때까지 이전 요소들과 비교합니다.이 과정을 배열의 마지막 요소까지 반복합니다.삽입 정렬의 시간 복잡도는 최악의 경우(내림차순으로 정렬된 배열) O(n^2)이고, 최선의 경우(이미 정렬된 배열) O(n)입니다. 자바 예제 코드import java.util.Arrays;public class InsertionSortExa..
선택 정렬(Selection Sort)은 간단한 정렬 알고리즘 중 하나로, 주어진 리스트에서 매번 가장 작은(혹은 가장 큰) 요소를 찾아 그것을 리스트의 맨 앞(혹은 맨 뒤)으로 옮기는 작업을 반복하는 방식입니다. 시간 복잡도는 O(n2)로, 정렬해야 할 항목이 많을 경우 비효율적이지만, 구현이 매우 간단합니다. 선택 정렬의 동작 과정입니다.주어진 리스트에서 가장 작은 값을 찾아 첫 번째 위치에 있는 값과 교환합니다.두 번째 위치부터 끝까지 중에서 다시 가장 작은 값을 찾아 두 번째 위치에 있는 값과 교환합니다.이를 마지막 요소까지 반복합니다.public class SelectionSort { public static void selectionSort(int[] arr) { int n ..
버블 정렬(Bubble Sort)은 매우 간단한 정렬 알고리즘 중 하나입니다.버블 정렬은 인접한 두 요소를 비교하여 잘못된 순서로 되어 있으면 그 둘을 교환하는 방식으로 동작합니다.이 과정이 배열이 정렬될 때까지 반복합니다. 장점과 단점장점: 구현이 매우 간단하고 코드가 직관적이다.단점: 평균 및 최악의 경우 시간 복잡도가 O(n²)으로, 큰 데이터 집합을 다룰 때 비효율적이다.public class BubbleSortExample { public static void bubbleSort(int[] arr) { int n = arr.length; boolean swapped; for (int i = 0; i arr[j + 1]) { ..
스택의 특징LIFO(Last In, First Out): 마지막에 들어온 데이터가 가장 먼저 나가는 구조입니다.깊이 우선 탐색(DFS), 백 트래킹에서 중요한 역할을 합니다.연산push(): 스택의 맨 위에 데이터를 추가합니다.pop(): 스택의 맨 위에 있는 데이터를 제거하고 반환합니다.peek(): 스택의 맨 위에 있는 데이터를 제거하지 않고 반환합니다.package StackAndQueue;import java.util.Stack;public class stack { public static void main(String[] args) { Stack stack = new Stack(); stack.push(1); stack.push(3); st..
배열의 특징1. 고정된 크기: 배열은 선언할 때 크기를 지정하며, 한번 크기를 지정하면 이후에 크기를 변경할 수 없다.2. 빠른 접근 속도: 배열은 인덱스를 통해 직접 값에 접근할 수 있어 접근 속도가 빠르다.3. 삽입과 삭제가 어렵다: 배열의 특정 위치에 값을 삽입하거나 삭제하려면 그 위치 이후의 모든 요소를 이동시켜야 한다.4. 메모리 사용 효율적: 배열은 연속된 메모리 공간을 사용하여 포인터와 같은 추가적인 메모리 사용이 없어 효율적이다. 배열 예제: 배열에서 값을 삽입하고, 삭제하는 과정에서 배열의 크기가 고정되어 있기 때문에 인덱스를 사용하여 값을 직접 수정하고 이동시켜야 합니다. public class ArrayExample { public static void main(String[]..