가능한 중복 인덱스를 찾는 :
Interview question - Search in sorted array X for index i such that X[i] = i내가되도록 [I] = 난
이 남아 정수의 정렬 된 배열과 배열의 길이와 같다. 이제 a(i)=i
과 같은 색인 i
을 찾아야합니다. 인덱스가 주어진 경우 o (logn)에서 수행 할 수 있지만 인덱스 i
이 언급되지 않은 경우는 어떻게됩니까?
가능한 중복 인덱스를 찾는 :
Interview question - Search in sorted array X for index i such that X[i] = i내가되도록 [I] = 난
이 남아 정수의 정렬 된 배열과 배열의 길이와 같다. 이제 a(i)=i
과 같은 색인 i
을 찾아야합니다. 인덱스가 주어진 경우 o (logn)에서 수행 할 수 있지만 인덱스 i
이 언급되지 않은 경우는 어떻게됩니까?
Alexandre가 논평에서 언급했듯이 색인의 예지는 이 아니라 O(log N)
을 의미합니다.
O(n)
시간이 필요합니다 :
for x = 0 to len(a) - 1:
if a[x] = x:
return x
명확한 설명이 : 원래 질문 목록 이었다는 것을 명시하지 않았다 정렬되어 나중에 추가되었습니다. 그 질문은 this one의 중복이되므로 솔루션에 대한 답변을 찾아야합니다.
이 답변은 다른 항목을 복제 할 필요가 없으므로 그대로 두며, 정렬되지 않은 경우와 관련이 있습니다.
@paxdiablo 인덱스 i가 주어지지 않았다면, 우리는 o (n)에서 그것을 할 것입니다. –
아마 여분의 정보는 배열이 정렬된다는 것입니다. –
@prp, 예. 나는 "if index is not not bit"라고 대답한다. 다른 사람들은 이미 색인이있는 경우 O (1)이라고 이미 언급했습니다. – paxdiablo
주어진 정보를 사용하여 일치하는 것을 찾을 때까지 값을 확인해야합니다. 최악의 시나리오 (일치하지 않거나 마지막 셀에서 일치)는 O (n)입니다. 배열이 이미 정렬 된 경우 O (log n) 인 이진 검색을 수행 할 수 있습니다.
귀하의 주장이 거짓이거나 일부 정보가 누락되었습니다.
-1 :이를 해결하기 위해 표준 바이너리 검색을 수행 할 수 없습니다. – GrahamS
올바른데, 배열에서 bsearch()를 그대로 사용할 수 없습니다. 솔루션의 O (log n) 속성을 유지하려면 자신의 바이너리 검색을 구현해야합니다. 배열을 수정 (장소 또는 사본에서)하고 [i]에서 i를 빼면 bsearch()를 사용할 수 있습니다. 그렇게하기위한 복잡성은 O (n)입니다. –
만약 내가 주어진다면, 나는 일정한 시간에 그것을 할 수있다. –
수정 된 이진 검색, 당신의 해결책을 사용하여 그것을했다. ... –
@prp 어떻게 당신은 O (log n) 시간에 배열을 정렬 했습니까? –