동적배열 예제

n C++에서 동적 배열(벡터라고 함)은 다음과 같습니다:n Python의 목록 데이터 형식 구현은 동적 배열입니다. Bagwell (2002)[16] 동적 배열을 구현하도록 조정할 수있는 VList 알고리즘을 발표했다. 각 항목은 새 배열에 개별적으로 복사해야 합니다. 동적 배열에서 배열에 몇 가지 요소를 추가 해야 할 때 고정 크기 배열을 만들 수 있습니다 다음이 방법을 사용 합니다: 여러 번 크기 조정 비용이 발생하지 않도록 하려면, 동적 배열 크기 두 배로 많은 크기로 크기를 조정 하 고 예약 된 공간을 사용 하 여 향후 확장에 좋습니다. 끝에 요소를 추가하는 작업은 다음과 같이 작동할 수 있습니다: 컴퓨터 과학에서 동적 배열, 성장 가능한 배열, 크기 조정 가능한 배열, 동적 테이블, 변경 가능한 배열 또는 배열 목록은 임의의 액세스, 변수 크기 목록 데이터 구조로 구성 요소를 사용할 수 있습니다. 추가되거나 제거됩니다. 그것은 많은 현대 주류 프로그래밍 언어로 표준 라이브러리와 함께 제공됩니다. 동적 배열은 할당 시 지정해야 하는 고정 용량이 있는 정적 배열의 한계를 극복합니다. 배열의 각 숫자에 대해 다른 모든 숫자의 곱을 찾습니다. 당신은 당신이 생각하는 것보다 빨리 그것을 할 수 있습니다! 계속 읽기 » 배열의 크기를 두 배로 늘려야 하는 경우 원래 배열이 먼저 복사됩니다. 그런 다음 프로그램은 새롭고 더 큰 연속 메모리 영역을 찾습니다. 그런 다음 연속된 공간에 두 배로 큰 새 배열을 만들고 원래 배열을 새 배열의 첫 번째 절반으로 저장합니다. 동적 배열은 일반적으로 초기 배열 요소수의 두 배로 초기화됩니다.

이 추가 공간은 추가 요소를 배열에 추가할 수 있도록 합니다. 따라서 다음과 같은 요소인 [1, 2]로 동적 배열을 만들고 싶다면 4개의 공백으로 동적 배열이 만들어집니다. 이 크기는 채울 충분한 요소를 추가할 때까지 유지됩니다. 5 번째 요소를 추가하려고하면 배열의 크기가 두 배가되고 (이제 용량이 8인) 5 번째 요소를 추가합니다. 동적 배열(C++의 벡터, Java의 ArrayList)은 삽입을 시도할 때 자동으로 증가하며 새 항목에 더 이상 공간이 남아 있지 않습니다. 일반적으로 면적은 두 배가 됩니다. 동적 배열이 전체 배열이 연속적이고 조회시간이 일정한 경우 배열을 늘리고 이동하는 데 에도 시간이 걸릴 수 있습니다. 최악의 경우 점근으로 새 요소를 삽입하면 O(n)O(n)O(n)가 필요합니다.

그러나 분할 상환 된 분석을 보고 런타임이 실제로 더 작아지는 지 확인하는 것이 중요합니다. O(1)O(1)O(1)를 참조하십시오. 동적 배열은 배열의 다음 논리적 확장입니다. 동적 배열은 프로그램 실행 중에 크기를 변경할 수 있습니다. 이 속성은 프로그래머가 지정된 지점에서 배열에 얼마나 많은 데이터가 들어갈지 모르는 프로그램에서 동적 배열에 더 많은 전력을 제공합니다. 예를 들어 하루 동안 내가 마보낸 모든 것을 추적하는 프로그램을 만들려면 동적 데이터 구조(프로그램 실행 중에 증가하고 축소할 수 있는 구조)를 사용해야 합니다. 하루 동안 얼마나 많은 다른 것들을 먹을지 모르기 때문에 역동적이어야합니다. 음식을 먹을 때마다 동적 데이터 구조의 끝에 음식 이름을 더하기만 하면 됩니다.

여기서 동적 배열은 좋은 선택이 될 것입니다. 비용이 많이 드는 삽입 및 삭제. 배열과 마찬가지로 요소는 서로 인접하여 저장됩니다. 따라서 배열 중간에 항목을 추가하거나 제거하려면 시간이 걸리는 다른 요소를 “스쿠팅”해야 합니다. 기존 배열을 확장하지 않는 이유는 무엇입니까? 해당 메모리는 이미 다른 프로그램에서 사용할 수 있기 때문입니다.