프로그래밍 공부/Java4 삽입 정렬(Insertion Sort) 삽입 정렬이란? 삽입 정렬은 두 번째 원소부터 시작하여 그 앞의 원소들과 비교하면서 앞의 원소가 크다면 해당 원소를 뒤로 옮기고, 크지 않다면 해당 위치의 다음 인덱스에 비교를 시작한 원소를 삽입하여 정렬하는 알고리즘입니다. 삽입 정렬의 기본 동작은 다음과 같습니다. 1. 정렬을 시작할 때, 첫 번째 요소는 이미 정렬된 상태로 간주합니다. 2. 두 번째 요소부터 시작하여 삽입하고자 하는 요소를 이전에 정렬된 부분 리스트와 비교합니다. 3. 삽입하고자 하는 원소보다 작은 원소를 만날 때까지 계속해서 비교하며, 작은 원소를 만나면 그 원소의 다음 위치에 비교를 시작한 원소를 삽입합니다. 4. 이 과정을 리스트의 끝까지 반복합니다. 삽입 정렬의 특징 1. stable 정렬: 동일한 값의 원소들 간에는 순서가 .. 프로그래밍 공부/Java 2024. 1. 18. 거품 정렬(Bubble Sort) 거품 정렬이란? 거품 정렬은 간단하면서 기본적인 정렬 알고리즘 중 하나입니다. 이 알고리즘은 인접한 두 원소를 비교하여 순서가 잘못된 경우에 서로 교환하는 방식으로 정렬을 진행합니다. 이러한 교환 작업을 계속해서 반복하면서 가장 큰 원소가 배열의 마지막 위치로 이동하게 됩니다. 이 과정을 배열의 모든 원소가 정렬될 때까지 반복합니다. 거품 정렬은 하나의 원소를 정렬하는 과정에서 많은 교환(swap)과정이 일어날 수 있어서 하나의 원소에 대해 한 번의 교환 과정을 갖는 선택 정렬에 비해 평균적으로 더 많은 시간이 소요됩니다. 거품 정렬의 특징 1. stable 정렬: 동일한 값의 원소들 간에는 순서가 유지되므로 안정 정렬입니다. 2. in-place 정렬: 자료 구조를 그대로 두고 그 안에서 요소들의 위치.. 프로그래밍 공부/Java 2024. 1. 18. 선택 정렬(Selection Sort) 선택 정렬이란? 선택 정렬은 간단하면서도 기본적인 정렬 알고리즘 중 하나입니다. 이 정렬 알고리즘은 한 번의 배열 탐색에서 가장 작은 원소의 위치를 찾아 첫 번째 위치의 원소와 교환하고, 그다음으로 작은 원소를 찾아 두 번째 위치의 원소와 교환하는 과정을 배열의 마지막 원소까지 반복하여 배열을 정렬합니다. 선택 정렬의 특징 1. unstable 정렬: 같은 값을 갖는 원소들의 순서가 정렬 이후 변경될 수 있기에 불안정 정렬입니다. 2. in-place 정렬: 자료 구조를 그대로 두고 그 안에서 요소들의 위치를 바꾸어 정렬합니다. 3. 시간복잡도: 최선, 평균, 최악의 경우 모두 O(N^2)의 시간 복잡도를 갖습니다. 왜냐하면 비교를 해 보기 전에는 어떤 원소가 가장 작은지 모르기 때문에 배열이 최선의 경.. 프로그래밍 공부/Java 2024. 1. 18. 문자열 상수 풀(String Constant Pool)이란? 문자열 상수 풀(String Constant Pool)이란? Java의 String Pool은 문자열 상수 풀이라고도 불리며, JVM이 문자열 리터럴을 관리하는 특별한 영역입니다. 해당 영역은 JVM의 힙 메모리 안의 별도의 공간으로 존재합니다. Stirng Pool의 주요 특징과 동작 방식은 다음과 같습니다. 1. 문자열 리터럴의 재사용 리터럴로 선언된 문자열은 문자열 풀에 저장되며, 이미 동일한 내용의 문자열이 존재하는지 확인합니다. 만약 동일한 내용의 문자열이 없다면 새로운 문자열이 풀에 추가되고, 이미 존재한다면 기존의 문자열을 재사용합니다. 2. 불변성 보장 String 클래스는 불변(immutable)하므로 한 번 생성된 문자열은 변경할 수 없습니다. 이는 문자열 풀에서 중복 검사와 재사용을 .. 프로그래밍 공부/Java 2024. 1. 12. 이전 1 다음