이진 검색 개요 정렬된 배열에서 원하는 요소를 효율적으로 찾습니다. 배열의 중간 값과 목표 값을 비교하여 검색 범위를 절반씩 줄여나갑니다. 이진 검색 동작 원리 배열의 중간 인덱스를 계산합니다. 중간 값과 목표 값을 비교합니다. 같을 경우 중간 인덱스를 반환합니다. 중간 값이 목표 값보다 작으면 우측 부분에서 검색을 계속합니다. 중간 값이 목표 값보다 크면 좌측 부분에서 검색을 계속합니다. 검색 범위가 0이 되면 목표 값이 없는 걸로 간주하고 -1을 반환합니다. 이진 검색 코드 예 function test(arr, target) { let left = 0 let right = arr.length - 1 while(left
선형 검색 개요 순차적으로 배열의 요소를 검사하여 목표 값을 찾는 방식으로 동작합니다. 선형 검색 동작 원리 배열이나 리스트의 첫 번째 요소부터 시작하여 마지막 요소까지 하나씩 순차적으로 검색합니다. 각 요소를 검색하면서 찾고자 하는 값을 확인합니다. 원하는 값을 찾으면 해당 요소의 인덱스를 반환하고 검색을 종료합니다. 배열의 마지막 요소까지 검사했는데도 목표 값을 찾지 못하면 -1을 반환합니다. 선형 검색 코드 예시 function test(arr, target) { const n = arr.length for(let i = 0; i < n; i++) { if(arr[i] === target) return i } return -1 } const arr = [5,4,3,2,1] const target =..
선택 정렬 개요 매 반복마다 배열에서 가장 작은 값을 찾아 정렬되지 않은 부분 배열의 첫 번째 요소와 교환하는 방식으로 동작합니다. 선택 정렬 동작 원리 배열에서 최솟값을 찾습니다. 최솟값과 배열의 첫 번째 요소를 교환합니다. 다음 반복에서는 두 번째 요소부터 시작하여 남은 요소들 중 최솟값을 찾아 두 번째 요소와 교환합니다. 이 과정을 반복하여 배열을 정렬합니다. 선택 정렬 코드 예시 function test(arr) { const n = arr.length for(let i = 0; i < n - 1; i++) { let minIndex = i for(let j = i + 1; j < n; j++) { if(arr[j] < arr[minIndex]) { minIndex = j } } } if(minI..
삽입 정렬 개요 배열의 두 번째 요소부터 시작하여 그 앞의 요소들과 비교하면서 올바른 위치를 찾아 삽입하는 방식으로 작동합니다. 각 단계에서 정렬되지 않은 부분 중에서 하나를 선택하여 이미 정렬된 부분에 삽입합니다. 삽입 정렬 동작 원리 배열의 두 번째 요소를 가져옵니다. 두 번째 요소를 첫 번째 요소와 비교하여, 정렬 조건이 맞으면 삽입합니다. 세 번재 요소를 앞의 정렬된 부분의 위치에 삽입합니다. 과정을 반복합니다. 삽입 정렬 코드 예시 function test(arr) { for(let i = 1; i = 0 && arr[j] > cValue) { arr[j + 1] = arr[j]..
버블 정렬 개요 인접한 두 개의 요소를 비교하여 필요에 따라 위치를 교환합니다. 정렬되지 않은 요소가 정렬된 순서로 이동하는 원리로 동작합니다. 버블 정렬 동작 원리 배열의 첫 번째 요소부터 시작하여 그 다음 요소와 비교합니다. 비교 후 조건에 해당되면 서로 위치를 교환합니다. 교환된 요소와 그 다음 요소를 비교합니다. 정렬이 완료될때까지 반복합니다. 요소끼리 비교할때 위치의 이동 변화가 없으면 정렬이 끝난것입니다. 버블 정렬 코드 예시 function test(arr) { const n = arr.length let finished for(let i = 0; i < n - 1; i++) { finished = true for(let j = 0; j < n - i - 1; j++) { if(arr[j] ..