본문 바로가기
반응형

전체 글201

초보 자바 프로그래밍(27) - 이진검색 (Binary Search) 🔖 INDEX 이진 검색 (Binary Search)은 정렬된 배열에서 효율적으로 값을 찾는 알고리즘입니다. 이진 검색은 배열의 중간 요소를 확인하여 찾고자 하는 값이 중간 요소보다 큰지 작은지를 판단합니다. 찾고자 하는 값이 중간 요소보다 작으면 중간 요소 왼쪽의 절반을 검색하고, 찾고자 하는 값이 중간 요소보다 크면 중간 요소 오른쪽의 절반을 검색합니다. 이 과정을 반복하면서 원하는 값을 찾습니다. 이진 검색의 작동 방식 이진 검색의 작동 방식은 다음과 같습니다: 배열의 가운데 요소를 확인합니다. 가운데 요소가 원하는 값과 일치하면 해당 요소의 인덱스를 반환합니다. 가운데 요소가 원하는 값보다 크면, 배열의 왼쪽 절반(가운데 요소보다 작은 값들)에서 검색을 계속합니다. 가운데 요소가 원하는 값보다 작.. 2023. 5. 2.
초보 자바 프로그래밍(26) - 선형검색 (Linear Search) 🔖 INDEX 선형 검색은 가장 간단한 검색 알고리즘입니다. 배열의 처음부터 끝까지 순차적으로 원하는 값을 찾을 때까지 각 요소를 검사합니다. 선형 검색은 정렬되지 않은 배열 또는 연결 리스트와 같은 자료 구조에서 사용할 수 있습니다. 선형 검색의 작동 방식 선형 검색의 작동 방식은 다음과 같습니다: 배열의 첫 번째 요소부터 시작하여 원하는 값과 비교합니다. 원하는 값과 일치하는 요소를 찾을 때까지 배열의 요소를 순차적으로 검사합니다. 원하는 값과 일치하는 요소를 찾으면 해당 요소의 인덱스를 반환합니다. 배열의 마지막 요소까지 검사했음에도 원하는 값과 일치하는 요소를 찾지 못한 경우, 값이 배열에 없다고 판단하여 -1 또는 적절한 오류 코드를 반환합니다. 선형 검색의 특징 선형 검색의 장점은 다음과 같습.. 2023. 5. 2.
초보 자바 프로그래밍(25) - 팀정렬 (Tim Sort) 🔖 INDEX 팀 정렬(Tim Sort)은 파이썬에서 기본 정렬 알고리즘으로 사용되는 안정적인 비교 기반 정렬 알고리즘입니다. 팀 정렬은 병합 정렬(Merge Sort)과 삽입 정렬(Insertion Sort)의 아이디어를 결합한 하이브리드 알고리즘으로, 실제 데이터의 특성을 고려해 높은 성능을 발휘합니다. 팀 정렬의 작동 원리 팀 정렬의 작동 원리는 다음과 같습니다: ​ 배열을 연속된 작은 부분 배열(subarrays)로 분할합니다. 이 부분 배열들은 이미 정렬되어 있거나 거의 정렬된 상태일 수 있습니다. 이러한 부분 배열을 '런(run)'이라고 합니다. 삽입 정렬을 사용하여 각 런을 정렬합니다. 작은 크기의 런에서는 삽입 정렬이 상대적으로 빠른 속도를 보입니다. 병합 정렬의 병합 과정을 사용하여 인접.. 2023. 5. 2.
초보 자바 프로그래밍(24) - 기수정렬 (Radix Sort) 🔖 INDEX 기수 정렬(Radix Sort)은 정수 및 문자열과 같은 비교가 아닌 데이터를 정렬하는 알고리즘입니다. 기수 정렬은 대표적으로 Least Significant Digit (LSD) 기수 정렬과 Most Significant Digit (MSD) 기수 정렬이 있습니다. 이 알고리즘은 각 자릿수의 값에 따라 데이터를 분류하고 정렬하는 방식을 사용합니다. 기수 정렬의 작동 원리 기수 정렬의 작동 원리는 다음과 같습니다. Least Significant Digit (LSD) 기수 정렬 가장 낮은 자릿수(일의 자리)부터 시작하여 각 숫자를 비교합니다. 각 숫자를 해당 자릿수의 값에 따라 버킷(bucket)에 저장합니다. 버킷에 저장된 숫자를 순서대로 다시 배열에 복사합니다. 다음 자릿수로 넘어가 1.. 2023. 5. 2.
초보 자바 프로그래밍(23) - 힙정렬 (Heap Sort) 🔖 INDEX 힙 정렬(Heap Sort)은 이진 힙(Binary Heap)이라는 자료구조를 사용하여 배열을 정렬하는 비교 기반 정렬 알고리즘입니다. 이진 힙은 완전 이진 트리(Complete Binary Tree)로서, 부모 노드의 값이 자식 노드의 값보다 항상 크거나 작은 특성을 가집니다. 힙 정렬은 이 특성을 이용해 배열을 정렬합니다. 힙 정렬의 작동 원리 힙 정렬의 작동 원리는 다음과 같습니다: ​ 배열을 이진 힙으로 변환합니다. 배열을 이진 힙으로 변환하는 과정은 일반적으로 배열의 원소들을 차례대로 삽입하는 방식으로 구현됩니다. 이 과정에서 최대 힙(Max-Heap) 또는 최소 힙(Min-Heap) 중 하나를 선택해야 합니다. 최대 힙을 사용하면 오름차순으로 정렬되고, 최소 힙을 사용하면 내림차.. 2023. 5. 2.
초보 자바 프로그래밍(22) - 퀵정렬 (Quick Sort) 🔖 INDEX 퀵 정렬(Quick Sort)은 분할 정복(Divide and Conquer) 전략을 사용하는 비교 기반 정렬 알고리즘입니다. 퀵 정렬은 배열을 피벗(pivot)이라 불리는 기준 원소를 선택한 후, 피벗보다 작은 원소와 큰 원소로 분할합니다. 그 후, 분할된 두 하위 배열에 대해 동일한 방식으로 퀵 정렬을 재귀적으로 적용하여 전체 배열을 정렬합니다. 퀵 정렬의 작동 원리 퀵 정렬의 작동 원리는 다음과 같습니다: 배열에서 피벗을 선택합니다. 피벗 선택 방법에 따라 성능에 큰 영향을 줄 수 있으며, 일반적으로 처음, 가운데, 마지막 원소 중 하나를 선택하거나, 무작위로 선택하기도 합니다. 피벗을 기준으로 배열을 분할합니다. 피벗보다 작은 원소들은 왼쪽 하위 배열에, 큰 원소들은 오른쪽 하위 배.. 2023. 5. 2.
초보 자바 프로그래밍(21) - 병합정렬 (Merge Sort) 🔖 INDEX 병합 정렬(Merge Sort)은 분할 정복(Divide and Conquer) 방식을 사용하는 비교 기반 정렬 알고리즘입니다. 병합 정렬은 배열을 두 개의 동일한 크기의 하위 배열로 분할한 다음, 하위 배열을 정렬한 후 다시 병합하는 과정을 통해 정렬을 수행합니다. 병합 정렬은 안정적이며, 빠르게 작동하므로 큰 데이터 셋에 적합한 알고리즘입니다. 병합 정렬의 작동 원리 병합 정렬의 작동 원리는 다음과 같습니다: 배열의 크기가 1 또는 0이 될 때까지 배열을 절반으로 나누어 재귀적으로 분할합니다. 분할된 하위 배열을 정렬하고 병합하는 과정을 시작합니다. 이 때 하위 배열의 크기가 1이면 이미 정렬된 것으로 간주합니다. 두 개의 인접한 정렬된 하위 배열을 병합하여 새로운 정렬된 배열을 만듭니.. 2023. 5. 2.
초보 자바 프로그래밍(20) - 삽입정렬 (Insertion Sort) 🔖 INDEX 삽입 정렬(Insertion Sort)은 간단한 비교 기반 정렬 알고리즘 중 하나로, 배열을 정렬된 부분과 정렬되지 않은 부분으로 나누어 정렬되지 않은 부분의 원소를 정렬된 부분에 적절한 위치에 삽입하는 방식으로 정렬을 수행합니다. 삽입 정렬은 작은 데이터 셋이나 거의 정렬된 데이터 셋에서 효율적으로 작동하며, 구현이 간단합니다. 삽입 정렬의 작동 원리 삽입 정렬의 작동 원리는 다음과 같습니다: 배열의 두 번째 원소부터 시작하여 정렬되지 않은 부분의 첫 번째 원소를 선택합니다. 선택한 원소를 정렬된 부분에서 적절한 위치에 삽입하기 위해, 정렬된 부분의 원소들과 비교하면서 왼쪽으로 이동합니다. 삽입할 위치를 찾을 때까지 이 과정을 반복합니다. 적절한 위치를 찾으면, 선택한 원소를 그 위치에 .. 2023. 5. 2.
초보 자바 프로그래밍(19) - 선택정렬 (Selection Sort) 🔖 INDEX 선택 정렬(Selection Sort)은 간단한 비교 기반 정렬 알고리즘 중 하나로, 배열에서 최솟값(또는 최댓값)을 찾아 정렬되지 않은 부분의 첫 번째 원소와 교환하는 방식으로 정렬을 수행합니다. 선택 정렬은 구현이 쉽고 간단하지만, 효율성이 떨어져 큰 데이터 셋에는 적합하지 않습니다. 선택 정렬의 작동 원리 선택 정렬의 작동 원리는 다음과 같습니다: ​ 배열에서 최솟값을 찾습니다. 이 원소가 정렬되지 않은 부분의 첫 번째 원소입니다. 최솟값을 정렬되지 않은 부분의 첫 번째 원소와 교환합니다. 이로써 최솟값이 정렬된 위치에 있게 됩니다. 정렬된 원소를 제외한 나머지 부분에서 다시 최솟값을 찾고, 이를 정렬되지 않은 부분의 첫 번째 원소와 교환합니다. 이 과정을 배열의 모든 원소가 정렬될 .. 2023. 5. 2.
반응형