정렬되지 않은 배열이 주어지고 효율적으로 상위 5 개 요소를 찾아야하므로 목록을 정렬 할 수 없습니다.정렬되지 않은 배열의 상위 5 개 요소
내 솔루션 :
이 배열의 최대 요소를 찾을 수 있습니다. O (n)
처리/사용 후이 최대 요소를 삭제하십시오.
단계 1을 반복한다. & 2, k 회 (이 경우 5 회).
시간 복잡도 : O (KN)/O (N) 공간 복잡성 : O (1)를.
나는 우리가 O (logN)의 최대 요소를 찾을 수 있다고 생각, 그래서 O (klogN)을 향상시킬 수있다. 내가 틀렸다면 나를 바로 잡아주세요.
우리가 이보다 더 잘 할 수 있을까요? 최대 힙을 사용하면 비효율적일까요?
PS - 숙제가 아닙니다.
정렬되지 않은 배열에서 max 요소를 찾을 때 O (N)보다 더 잘할 수 있다고 생각하지 않습니다. 너 마음에 무엇이 있었 니? – Kevin
배열을 탐색하면서 상위 5 개 (또는 k 개)의 요소를 추적 한 다음 완료하면이를 삭제하지 않는 이유는 무엇입니까? O (n) [또는 O (logN)]이라면 검색 알고리즘을 향상시킬 수 있습니다]. –
죄송 합니다만, O (log n) 시간에 _unsorted_ 배열의 max 요소를 찾을 수 없습니다. 예를 들어 정렬 된 배열로 할 수 있습니다. 이진 검색. 그러나 정렬 된 배열에서 문제는 사소한 O (1) 솔루션을 가지고 있습니다. – 9000