Algorithm/기본문제
-
고급 정렬(2) - 퀵 정렬(quick sort)Algorithm/기본문제 2021. 3. 13. 14:11
기준점(pivot)을 정해서 기준점보다 작은 데이터는 기준점 좌측에, 큰 데이터는 우측에 배치하는 함수를 작성 각 왼쪽, 오른쪽은 재귀용법을 사용하여 다시 동일 함수를 호출하여 위의 작업을 반복함 함수는 (왼쪽 + 기준점 + 오른쪽) 배열을 리턴함 function quickSort(data) { if (data.length data[i]) { left.push(data[i]); } else { right.push(data[i]); } } return quickSort(left).concat([pivot].concat(quickSort(right))); }
-
고급 정렬(1) - 병합정렬(merge sort)Algorithm/기본문제 2021. 3. 13. 14:10
재귀 용법을 활용한 정렬 알고리즘 과정 리스트를 절반으로 잘라 비슷한 크기의 두 부분 리스트로 나눔 각 부분 리스트를 재귀적으로 병합 정렬을 이용해 정렬함 두 부분 리스트를 다시 하나의 정렬된 리스트로 합병 두 개의 함수를 통해 작업이 수행됨 첫 번째 함수: 리스트를 분리하고 각 분리된 리스트를 두 번째 함수를 통해 병합하여 리턴 리스트의 중간 인덱스를 기준으로 왼쪽, 오른쪽 리스트로 분리 각 분리된 리스트는 재귀 함수로 동일한 과정 진행 - 정렬 및 합병 과정 최종적으로 합병된 리스트가 리턴됨 두 번째 함수: 첫 번째 함수에 의해 쪼개진 리스트를 정렬된 하나의 리스트로 리턴 분리된 왼쪽, 오른쪽 리스트가 파라미터이며, 두 리스트를 정렬된 하나의 리스트로 만들어 반환 작업 시작 시, 각 리스트의 첫 번째..
-
기본 정렬(버블정렬, 선택정렬, 삽입정렬)Algorithm/기본문제 2021. 3. 13. 14:10
1. 버블정렬(bubble sort) (오름차순 기준)인접한 두 데이터를 비교하여 앞의 데이터가 뒤의 데이터보다 크다면 자리를 바꿈 정렬 1턴을 수행할 때마다 해당 턴의 맨 마지막 위치에 정렬이 완료된 데이터가 배치됨 각 턴의 마지막은 턴을 수행할 때마다 한 칸씩 앞으로 옴 어느 특정 턴에서 swap이 일어나지 않은 경우는 더 이상 정렬할 것이 없다는 의미이므로 이 경우 전체 정렬을 중단함 function bubbleSort(data) { for (let i = 0; i data[j + 1]) { [data[j], data[..