Един динамичен масив - studopediya

Масив, чийто размер може да се промени, докато програмата се нарича динамичен. С други думи, един динамичен масив - структурата на данните променлива размер, който позволява по време на изпълнението на програмата за автоматично добавяне и премахване на елементи. максималния си размер може да се определи чрез постоянно или определен по време на изпълнение. В първия случай, динамичен масив е изграден на базата на статичен масив, а вторият - на КС, което е с размер, който се определя по време на изпълнение. Това се случва, че променлива дължина масив се приема като динамичен масив. Но често това не е така, тъй като размерът на втория, както е отбелязано, може да се променя автоматично, което не е вярно и за първия. Например, размерът на декларираните масив А. п. където п - .. неподготвена променлива, т.е. в началото на програмата, п не носи никаква стойност. Предполага се, че нейната стойност, а с него и размера на масива, въведена от потребителя. Тази ситуация показва, че А - масив с променлива дължина, но това не означава, че е задължително да динамична, въпреки че, както е отбелязано по-горе, това е възможно.







Изпълнение на обикновен динамичен масив основава на следната манипулация. Разпределени масив от фиксиран размер. Той е разделен на две части: първите магазини масив динамични елементи, а вторият е пространство резерв, който може да се използва, когато е необходимо. Такава организация, която Ви позволява да добавяте елементи към края на масива динамичен, както и да ги изтриете и да го направя в постоянен време. Ако масивът е пълен (попълнено двете страни на оригиналния масив), а след това ние казваме, че изтощен физически размер; броя на елементите, използвани за динамичните съдържанието на масива, се нарича логическо размер.







Повечето от сегашните езици за програмиране от високо ниво подкрепа за динамичните масиви. За да работите с най-новите имат вградени оператори и функции, както и някои езици за програмиране предоставят няколко възможности за тяхното изпълнение. Например, C ++ може да се използва за тази цел:

· Изчистване функция, calloc, презаделяне и свободно;

Пример за създаване и пречистване число динамичен масив, състояща се от 33 елемента:

Int * А = изчистване (sizeof (междинно съединение) * 33); // Създаваме

· Операторите нов и изтриване (те могат да бъдат само един начин да промените размера на масива - напълно да го чисти);

Пример за създаване и пречистване реално динамично решетка, състояща се от 11 елемента:

поплавък * А = нов поплавък [10]; // Създаваме

изтриване [] А; // премахнете

Пример за създаване и пречистване число динамичен масив, състояща се от 22 елемента:

вектор А (22); // Създаваме

Над примери са показани три начина за създаване на динамичен масив и пречистване на C ++. Но това не е всички характеристики на езика. Например, вектор клас има набор от методи за достъп до елементите, добавяне и отстраняването им, и така нататък. Н.

В Pascal динамичен масив може да се определи по два начина. Първият включва използването на новата процедура, а втората процедура за SetLength. И в двата случая, първият масив е обявена за:

Var <имя массива>: Array на <тип данных>;

След това, в устройството се използва един от процедури:

<имя массива>: = New <имя типа>[<значение>]

SetLength (<имя массива>, <значение>);

SetLength процедура и нова резервна място в паметта за динамична променлива (в случая на динамичен масив).

Един обикновен статичен масив на динамични победи на скоростта, което се компенсира с подобрена функционалност на последната. Като цяло, сложността време на основните операции на динамични елементи на масива, както следва:

Достъп до елемент от неговия индекс се извършва в постоянно време O (1);

· Поставяне или изтриване на елементи:

- началото на масива: О (п) (линейно време);

- средна спектър: О (п) (линейно време);

- край на масива: О (1) (в постоянно време).