원본배열 유지하고 새 배열 반환하도록 리팩토링한 GPT 코드입니다. 주석 달아달라니까 주석까지 친절하게 달아주네요ㅋㅋ 세상참 편해졌네요.
GPT로 코테보는 사람도 있어서 그거 방지하려고 캠이랑 실시간으로 하는 경우도 있더라구요...
function mergeSort(arr, leftIndex, rightIndex) {
// 기저 사례: 하나의 요소만 있는 경우, 그 요소를 배열로 반환
if (leftIndex >= rightIndex) {
return [arr[leftIndex]]
}
// 중간 지점 계산
let midIndex = parseInt((leftIndex + rightIndex) / 2)
// 배열을 두 부분으로 나누어 각각을 재귀적으로 정렬
let leftArr = mergeSort(arr, leftIndex, midIndex)
let rightArr = mergeSort(arr, midIndex + 1, rightIndex)
// 병합된 배열 반환
return merge(leftArr, rightArr)
}
function merge(leftArr, rightArr) {
let result = []; // 병합된 요소를 저장할 배열
let leftIndex = 0, rightIndex = 0; // 각 배열의 인덱스
// 두 배열 중 하나가 완전히 순회될 때까지 반복
while (leftIndex < leftArr.length && rightIndex < rightArr.length) {
// leftArr의 현재 요소와 rightArr의 현재 요소를 비교
if (leftArr[leftIndex] < rightArr[rightIndex]) {
// leftArr의 요소가 더 작은 경우, 결과 배열에 추가하고 leftArr의 인덱스 증가
result.push(leftArr[leftIndex]);
leftIndex++;
} else {
// rightArr의 요소가 더 작거나 같은 경우, 결과 배열에 추가하고 rightArr의 인덱스 증가
result.push(rightArr[rightIndex]);
rightIndex++;
}
}
// 남은 요소들을 결과 배열에 추가
// leftArr 또는 rightArr 중 하나가 이미 완전히 순회된 후, 나머지 배열의 남은 요소들을 결과 배열에 추가
return result.concat(leftArr.slice(leftIndex)).concat(rightArr.slice(rightIndex));
}
와우 엄청 편하네요 ㅎㅎ
AI덕에 개발자가 많이 편해지는 것 같습니다
답글