2
Median of Medians를 사용하여 nth_number 선택 알고리즘을 구현했습니다. wikipedia에서 공간의 복잡성은 O (1)메디안 공간 복잡도
중간 값을 중간 배열로 저장해야만 중간 값을 찾을 수 있습니다. 여분의 메모리를 사용하지 않고 어떻게 할 수 있습니까? 공간 복잡성 증가로 간주되지 않는 경우 설명하십시오.
function nth_number(v, n) {
var start = 0;
var end = v.length - 1;
var targetIndex = n - 1;
while(true) {
var medians = []; /* Extra memory. */
/* Divide our array into groups of 5s. Find a median within each */
for(var i = start; i <= end; i += 6) {
if(i + 5 < end)
medians.push(findMedian(v, i, i + 5));
else
medians.push(findMedian(v, i, end));
}
var median = findMedian(medians, 0, medians.length - 1); /* Find the median of all medians */
var index = partition(v, median, start, end);
if(index === targetIndex) {
console.log(median);
return median;
}
else {
if(index < targetIndex) {
start = index + 1;
targetIndex -= index;
}
else {
end = index - 1;
}
}
}
}
입력 배열을 덮어 쓰지 않고 O (1) 공간에서 중간 값을 찾을 수 있다고 생각지 않습니다. – tmyklebu