Maybaygiare.org

Blog Network

청산 분석

동적 arrayEdit

상각의 분석 밀어 작동을 위한 동적 배열

고려하는 동적 배열에서 성장하는 크기로 더 많은 요소가 추가되었다, 과 같은ArrayListJava 또는std::vector에서는 C++. 크기 4 의 동적 배열로 시작하면 4 개의 요소를 그 위에 밀어 넣을 수 있으며 각 작업에는 일정한 시간이 걸릴 것입니다. 그러나 다섯 번째 요소를 해당 배열에 밀어 넣는 것은 배열이 현재 크기의 두 배(8)의 새 배열을 만들고 이전 요소를 새 배열에 복사 한 다음 새 요소를 추가해야하므로 더 오래 걸릴 것입니다. 다음 세 가지 푸시 작업은 마찬가지로 일정한 시간이 걸릴 것이고 후속 추가는 배열 크기의 또 다른 느린 두 배가 필요합니다.,일정한 시간.

QueueEdit

다음과 같은 루비의 구현 큐,FIFO 데이터 구조

class Queue def initialize @input = @output = end def enqueue(element) @input << element end def dequeue if @output.empty? while @input.any? @output << @input.pop end end @output.pop endend

인큐 작업 밀어 요소에 입력 array;이 작업에 따라 달라지지 않습의 길이를 입력 또는 출력하고 따라서 실행되는 일정한 시간입니다.그러나 디 큐 작업이 더 복잡합니다. 면출력 배열은 이미 있는 일부 요소가 그것에서는,다음에서 실행되는 일정 시간에,그렇지 않으면,큐에서 소 O(n){\displaystyle O(n)}

O(n)

시간을 모두 추가 요소에 출력에서 배열을 입력을 배열은 현재의 길이를 입력 배열입니다. 복사 후 엔 입력에서 요소,우리는 수행 할 수 있습니다 엔 큐 제거 작업,각각 일정한 시간이 걸립니다,출력 배열이 다시 비어 있기 전에. 따라서,우리는 시퀀스를 수행 할 수 있습니다 엔 디 큐 작업 만 영(엔){\디스플레이 스타일 영(엔)}

답글 남기기

이메일 주소는 공개되지 않습니다.