Skip to content

Commit

Permalink
comment : remove comments
Browse files Browse the repository at this point in the history
  • Loading branch information
luckylooky2 committed Oct 17, 2023
1 parent d65895a commit eb40613
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 30 deletions.
6 changes: 0 additions & 6 deletions baekjoon/11728.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,3 @@ while (i !== n || j !== m) {
}

console.log(answer.join(" "));

// if (j === m || arr1[i] < arr2[j]) answer.push(arr1[i++]);
// else if (i === n || arr1[i] >= arr2[j]) answer.push(arr2[j++]);
// if (j === m || arr1[i] < arr2[j]) answer.push(arr1[i++]);
// else answer.push(arr2[j++]);
// 이 코드가 아래라면 어떤 문제가 발생? 아무 문제도 발생하지 않음
2 changes: 0 additions & 2 deletions baekjoon/11729.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
const { readSync } = require("fs");

// 하노이의 탑 이동 순서 : 재귀 호출
const n = parseInt(
require("fs").readFileSync("/dev/stdin").toString().trim(),
Expand Down
4 changes: 0 additions & 4 deletions baekjoon/mergeSort.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,3 @@ function mergeSort(left, right, arr) {
}

module.exports = mergeSort;

// merge sort는 stable sort
// 같은 우선순위를 가진 원소들의 순서가 그대로 유지되는 정렬 방법
// 파일을 생성 순, 이름 순으로 2번 정렬할 때, 이미 정렬한 생성 순서를 유지할 수 있음
39 changes: 21 additions & 18 deletions baekjoon/quickSort.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,6 @@ function quickSort(start, end, arr) {
if (start > end) return;

const pivot = arr[start];
// 추가적인 공간을 이용하는 방법
// - 캐시 적중률이 낮고, 공간 복잡도가 커지는 단점
// const tmp = [];
// for (let i = 0; i < arr.length; i++) if (pivot > arr[i]) tmp.push(arr[i]);
// tmp.push(pivot);
// for (let i = 0; i < arr.length; i++) if (pivot < arr[i]) tmp.push(arr[i]);

// 추가적인 공간을 이용하지 않는 방법(In-place sort)
// - 두 개 포인터를 사용
// - 위에서 pivot이 들어갈 위치를 r이 정함(현재 pivot보다 큰 요소의 개수)
Expand All @@ -21,14 +14,7 @@ function quickSort(start, end, arr) {
let tmp;
// O(n)
while (l <= r) {
// l은 pivot보다 작은 개수를 세는 용도
// - pivot보다 큰 수가 나오는 경우 스왑을 위해 멈춤
// - l === end + 1이라면, 모든 수가 pivot보다 작다는 뜻 => pivot이 가장 끝 인덱스(end)로 감
// - l !== end + 1이라면, pivot이 중간에 있는 요소와 교체하게 됨
while (arr[l] <= pivot) l++;
// r은 pivot보다 큰 개수를 세며, pivot이 들어갈 자리를 찾는 용도
// - pivot보다 작은 수가 나오는 경우 스왑을 위해 멈춤
// - l > r이라면, pivot보다 더 이상 작은 수가 없는 것이므로 => 현재 r이 pivot의 자리가 됨
while (arr[r] > pivot) r--;

if (l > r) break;
Expand All @@ -38,9 +24,6 @@ function quickSort(start, end, arr) {
arr[r] = tmp;
}
// pivot 바꾸기
// - pivot의 자리는 항상 정해져 있으므로, 제일 마지막에 바꿈
// - l === end + 1 : pivot의 자리는 맨 끝 => 항상 맨 끝은 아님에 주의
// - l !== end + 1 : pivot의 자리는 중간
tmp = arr[r];
arr[r] = arr[start];
arr[start] = tmp;
Expand All @@ -55,4 +38,24 @@ module.exports = quickSort;

// 장점) 캐시 적중률 때문에 같은 O(nlogn)이어도 더 빠름
// 단점) 최악의 경우 O(n^2)가 나올 수 있음 => 이미 정렬된 경우
// 라이브러리는 어떻게 해결? 랜덤 pivot 선택, pivot 후보 3개 중 중앙값을 선택, 일정 깊이 이상 들어가면 heap sort로 바꿔 정렬
// 라이브러리는 어떻게 해결? 랜덤 pivot 선택, pivot 후보 3개 중 중간값을 선택, 일정 깊이 이상 들어가면 heap sort로 바꿔 정렬

// 추가적인 공간을 이용하는 방법
// - 캐시 적중률이 낮고, 공간 복잡도가 커지는 단점
// const tmp = [];
// for (let i = 0; i < arr.length; i++) if (pivot > arr[i]) tmp.push(arr[i]);
// tmp.push(pivot);
// for (let i = 0; i < arr.length; i++) if (pivot < arr[i]) tmp.push(arr[i]);

// 추가적인 공간을 이용하지 않는 방법(In-place sort)
// - 두 개 포인터를 사용
// - 위에서 pivot이 들어갈 위치를 r이 정함(현재 pivot보다 큰 요소의 개수)

// l은 pivot보다 작은 개수를 세는 용도
// - pivot보다 큰 수가 나오는 경우 스왑을 위해 멈춤
// - l === end + 1이라면, 모든 수가 pivot보다 작다는 뜻 => pivot이 가장 끝 인덱스(end)로 감
// - l !== end + 1이라면, pivot이 중간에 있는 요소와 교체하게 됨

// r은 pivot보다 큰 개수를 세며, pivot이 들어갈 자리를 찾는 용도
// - pivot보다 작은 수가 나오는 경우 스왑을 위해 멈춤
// - l > r이라면, pivot보다 더 이상 작은 수가 없는 것이므로 => 현재 r이 pivot의 자리가 됨

0 comments on commit eb40613

Please sign in to comment.