Computer >> 컴퓨터 >  >> 프로그램 작성 >> 프로그램 작성

데이터 구조의 배열 배가


때로는 동적 메모리 할당을 사용하여 배열을 생성합니다. 동적 메모리 할당 기술을 사용하여 배열을 할당하는 경우 몇 가지 작업을 수행하여 배열 크기를 두 배로 늘릴 수 있습니다.

초기 배열 크기가 5라고 가정합니다.

배열

0
1
2
3
4
요소 1
요소 2
요소 3
요소 4
요소 5

배열을 두 배로 늘리면 크기는 -

입니다.
0
1
2
3
4
5
6
7
8
9
요소 1
요소 2
요소 3
요소 4
요소 5
요소 6
요소 7
요소 8
요소 9
요소 10

크기가 n인 배열 arr의 크기를 두 배로 늘리려면 arr[0…n-1]입니다. 처음에는 m이라고 하는 크기의 새 배열을 하나 만들어야 합니다. 그런 다음 n개의 요소를 arr에서 새 배열로 복사합니다. 마지막으로 새 배열을 가리키도록 arr 값을 변경합니다.

크기가 m인 배열을 생성하려면 θ(m) 시간이 걸립니다. 일부 기본값으로 초기화되기 때문입니다. 그런 다음 이전 어레이에서 새 어레이로 복사하는 데 추가 θ(n) 시간이 필요합니다. 따라서 작업에는 θ(m + n) 시간이 걸립니다. 이 작업은 어레이가 가득 찼을 때 발생합니다. 그리고 일반적으로 m 값은 2n과 같습니다. 따라서 복잡성은 θ(2n + n) =θ(3n)이 θ(n)과 동일합니다. 그러나이 작업은 비용이 많이 드는 것으로 간주됩니다. 그러나 이 작업은 하위 시퀀스 n 반복에 걸쳐 상각된 다음 반복당 θ(1) 시간만 추가합니다. 따라서 상수 인자로 증가하는 배열 크기가 점근적 복잡성에 부정적인 영향을 미치지 않는다는 것을 이해할 수 있습니다.