중간 값을 찾는 선택 알고리즘을 이해하려고했습니다. 아래에 가짜 코드를 붙여 넣었습니다. SELECT(A[1 .. n], k):
if n<=25
use brute force
else
m = ceiling(n/5)
for i=1 to m
B[i]=SELECT(A[5i-4 .. 5i], 3)
mom=SELECT(B[1 ..m], floor(m/2)
저는 "5"가 어디에서 왔는지 이해하려고 노력했지만, 어떻게 유도되었는지와 왜 최적인지에 대한 간단한 설명을 찾을 수 없습니다. 예를 들어 7을 실행 가능한 옵션이라고 말하지 않는 이유는 무엇입니까? 내가 5에서 볼 수있는 유일한 이점은 중간에 양면에 2 개의 항목이있어 5 개 항목 이상에 3 개 미만의 간단한 스왑 경우를 정렬하는 것입니다.
나는 어쩌면 엄청나게 바보 같은 짓을하고있을 것입니다.하지만이 축소 작업을 할 수는 없습니다. 이미이 작업을 수행하는 라이브러리가있을 수 있지만 자체 학습을위한 것입니다. 나랑). gpuMedOdd<<<9, numEntries/9>>>(d_entries, d_med);
: 나는대로이 커널 함수를 호출 __global__ void gpuMedOdd(int
중간 값 알고리즘의 빠른 정렬 작업을하고 있습니다. 나는 일반적으로 선택 정렬을 사용하여 5 개 요소의 하위 배열의 중앙값을 구합니다. 그러나, 수천 개의 서브 어레이가 있다면, 이것은 내가 천 개의 중간 값의 중간 값을 찾아야한다는 것을 의미합니다. 최적의 선택이 아니기 때문에 중간 값을 찾기 위해 선택 정렬을 사용할 수 없다고 생각합니다. 질문 :이 사
개인적으로 중간 값의 중간 값이 실제 중간 값이 아니라고 생각합니다. 옳은? 위의 문장이 참이라면 Kth min elem의 시간 복잡도를 찾기 위해 배열을 분할하는 피벗으로 중앙값의 중앙값을 사용하는 것이 최악의 경우는 O (n)입니까? "n"은 elems의 숫자입니다.
정렬되지 않은 목록의 약 중간 값을 찾아, 난 내가 사용할 수 없습니다 중간 값의 두 알고리즘 알고리즘 1 quickselect 알고리즘 2 - 중간을 알고 왜냐하면 최악의 경우 O (n^2)가 필요하기 때문입니다. 중위수의 메디아에 대해 들었지만 제 동료들은 일정한 인자로 O (n)을 취할 것을 제안합니다. 따라서 시간 복잡도는 Cn이고 상수 계수는 qu
I 크기 N의 정렬되지 않은 배열하고 난 K-1 제수를 찾아야하므로 각 서브 세트는 동일한 크기이다 (같은 배열이 정렬 된 후) . 이 질문을 k-1 = 3으로 보았습니다. 나는 중앙값의 중간 값이 필요하다고 생각하는데 이것은 o (n)이 될 것입니다. 그러나 나는 우리가 그것을해야한다고 생각한다 k 번 그래서 o (nk). o (n logk)이 필요한 이
Median of Medians를 사용하여 nth_number 선택 알고리즘을 구현했습니다. wikipedia에서 공간의 복잡성은 O (1) 중간 값을 중간 배열로 저장해야만 중간 값을 찾을 수 있습니다. 여분의 메모리를 사용하지 않고 어떻게 할 수 있습니까? 공간 복잡성 증가로 간주되지 않는 경우 설명하십시오. function nth_number(v, n
내가 분산 컴퓨팅에 대해 배우려고 노력하고 많은 수의 세트의 중간 찾는 문제를 건너 왔어요되었다 것은 우리가 있다고 가정 메모리 (크기 N)에 맞지 않는 큰 수의 수 (요소 수를 N * K라고 할 수 있음). 이 데이터의 중앙값을 어떻게 알 수 있습니까? 메모리상에서 수행되는 연산이 독립적이라고 가정하자. 즉, N 개의 요소를 최대로 처리 할 수있는 각각의