Википедия

Ассоциативный массив

Ассоциативный массив (словарь) — абстрактный тип данных (интерфейс к хранилищу данных), позволяющий хранить пары вида «(ключ, значение)» и поддерживающий операции добавления пары, а также поиска и удаления пары по ключу:

  • INSERT(ключ, значение)
  • FIND(ключ)
  • REMOVE(ключ)

Предполагается, что ассоциативный массив не может хранить две пары с одинаковыми ключами.

В паре значение называется значением, ассоциированным с ключом . Где  — это key, a  — value. Семантика и названия вышеупомянутых операций в разных реализациях ассоциативного массива могут отличаться.

Операция FIND(ключ) возвращает значение, ассоциированное с заданным ключом, или некоторый специальный объект UNDEF, означающий, что значения, ассоциированного с заданным ключом, нет. Две другие операции ничего не возвращают (за исключением, возможно, информации о том, успешно ли была выполнена данная операция).

Ассоциативный массив с точки зрения интерфейса удобно рассматривать как обычный массив, в котором в качестве индексов можно использовать не только целые числа, но и значения других типов — например, строки.

Поддержка ассоциативных массивов есть во многих интерпретируемых языках программирования высокого уровня, таких, как Perl, PHP, Python, Ruby, Tcl, JavaScript и других. Для языков, которые не имеют встроенных средств работы с ассоциативными массивами, существует множество реализаций в виде библиотек. Ассоциативная память это способ прямой поддержки ассоциативных массивов на аппаратном уровне.

Примером ассоциативного массива является телефонный справочник: значением в данном случае является совокупность «Ф. И. О. + адрес», а ключом — номер телефона, один номер телефона имеет одного владельца, но один человек может иметь несколько номеров.

Три основных операции часто дополняются другими, наиболее популярные расширения:

  • CLEAR — удалить все записи,
  • EACH — «пробежаться» по всем хранимым парам,
  • MIN — найти пару с минимальным значением ключа,
  • MAX — найти пару с максимальным значением ключа.

В последних двух случаях необходимо, чтобы на ключах была определена операция сравнения.

Реализации ассоциативного массива

Существует множество различных реализаций ассоциативного массива.

Самая простая реализация может быть основана на обычном массиве, элементами которого являются пары (ключ, значение). Для ускорения операции поиска можно упорядочить элементы этого массива по ключу и осуществлять нахождение методом бинарного поиска. Но это увеличит время выполнения операции добавления новой пары, так как необходимо будет «раздвигать» элементы массива, чтобы в образовавшуюся пустую ячейку поместить новую запись.

Наиболее популярны реализации, основанные на различных деревьях поиска. Так, например, в стандартной библиотеке STL языка C++ контейнер map реализован на основе красно-чёрного дерева. В языках D, Java, Ruby, Tcl, Python используется один из вариантов хеш-таблицы. Есть и другие реализации.

У каждой реализации есть свои достоинства и недостатки. Важно, чтобы все три операции выполнялись как в среднем, так и в худшем случае за время image, где image — текущее количество хранимых пар. Для сбалансированных деревьев поиска (в том числе для красно-чёрных деревьев) это условие выполнено.

В реализациях, основанных на хеш-таблицах, среднее время оценивается как image, что лучше, чем в реализациях, основанных на деревьях поиска. Но при этом не гарантируется высокая скорость выполнения отдельной операции: время операции INSERT в худшем случае оценивается как image. Операция INSERT выполняется долго, когда коэффициент заполнения становится высоким и необходимо перестроить индекс хеш-таблицы.

Хеш-таблицы плохи также тем, что на их основе нельзя реализовать быстро работающие дополнительные операции MIN, MAX и алгоритм обхода всех хранимых пар в порядке возрастания или убывания ключей.

Примечания

  1. В JavaScript объекты поддерживают создание свойств с произвольным (строковым) ключом, таким образом, они реализуют также базовые свойства ассоциативного массива. См.: Объекты как ассоциативные массивы. Учебник JavaScript. Дата обращения: 13 июля 2024. Архивировано 15 сентября 2015 года.

Ссылки

  • NIST’s Dictionary of Algorithms and Data Structures: Associative Array
  • NIST’s Dictionary of Algorithms and Data Structures: Association List

Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер, Информация о Ассоциативный массив, Что такое Ассоциативный массив? Что означает Ассоциативный массив?

Associativnyj massiv slovar abstraktnyj tip dannyh interfejs k hranilishu dannyh pozvolyayushij hranit pary vida klyuch znachenie i podderzhivayushij operacii dobavleniya pary a takzhe poiska i udaleniya pary po klyuchu INSERT klyuch znachenie FIND klyuch REMOVE klyuch Predpolagaetsya chto associativnyj massiv ne mozhet hranit dve pary s odinakovymi klyuchami V pare k v displaystyle k v znachenie v displaystyle v nazyvaetsya znacheniem associirovannym s klyuchom k displaystyle k Gde k displaystyle k eto key a v displaystyle v value Semantika i nazvaniya vysheupomyanutyh operacij v raznyh realizaciyah associativnogo massiva mogut otlichatsya Operaciya FIND klyuch vozvrashaet znachenie associirovannoe s zadannym klyuchom ili nekotoryj specialnyj obekt UNDEF oznachayushij chto znacheniya associirovannogo s zadannym klyuchom net Dve drugie operacii nichego ne vozvrashayut za isklyucheniem vozmozhno informacii o tom uspeshno li byla vypolnena dannaya operaciya Associativnyj massiv s tochki zreniya interfejsa udobno rassmatrivat kak obychnyj massiv v kotorom v kachestve indeksov mozhno ispolzovat ne tolko celye chisla no i znacheniya drugih tipov naprimer stroki Podderzhka associativnyh massivov est vo mnogih interpretiruemyh yazykah programmirovaniya vysokogo urovnya takih kak Perl PHP Python Ruby Tcl JavaScript i drugih Dlya yazykov kotorye ne imeyut vstroennyh sredstv raboty s associativnymi massivami sushestvuet mnozhestvo realizacij v vide bibliotek Associativnaya pamyat eto sposob pryamoj podderzhki associativnyh massivov na apparatnom urovne Primerom associativnogo massiva yavlyaetsya telefonnyj spravochnik znacheniem v dannom sluchae yavlyaetsya sovokupnost F I O adres a klyuchom nomer telefona odin nomer telefona imeet odnogo vladelca no odin chelovek mozhet imet neskolko nomerov Tri osnovnyh operacii chasto dopolnyayutsya drugimi naibolee populyarnye rasshireniya CLEAR udalit vse zapisi EACH probezhatsya po vsem hranimym param MIN najti paru s minimalnym znacheniem klyucha MAX najti paru s maksimalnym znacheniem klyucha V poslednih dvuh sluchayah neobhodimo chtoby na klyuchah byla opredelena operaciya sravneniya Realizacii associativnogo massivaSushestvuet mnozhestvo razlichnyh realizacij associativnogo massiva Samaya prostaya realizaciya mozhet byt osnovana na obychnom massive elementami kotorogo yavlyayutsya pary klyuch znachenie Dlya uskoreniya operacii poiska mozhno uporyadochit elementy etogo massiva po klyuchu i osushestvlyat nahozhdenie metodom binarnogo poiska No eto uvelichit vremya vypolneniya operacii dobavleniya novoj pary tak kak neobhodimo budet razdvigat elementy massiva chtoby v obrazovavshuyusya pustuyu yachejku pomestit novuyu zapis Naibolee populyarny realizacii osnovannye na razlichnyh derevyah poiska Tak naprimer v standartnoj biblioteke STL yazyka C kontejner map realizovan na osnove krasno chyornogo dereva V yazykah D Java Ruby Tcl Python ispolzuetsya odin iz variantov hesh tablicy Est i drugie realizacii U kazhdoj realizacii est svoi dostoinstva i nedostatki Vazhno chtoby vse tri operacii vypolnyalis kak v srednem tak i v hudshem sluchae za vremya O log n displaystyle O log n gde n displaystyle n tekushee kolichestvo hranimyh par Dlya sbalansirovannyh derevev poiska v tom chisle dlya krasno chyornyh derevev eto uslovie vypolneno V realizaciyah osnovannyh na hesh tablicah srednee vremya ocenivaetsya kak O 1 displaystyle O 1 chto luchshe chem v realizaciyah osnovannyh na derevyah poiska No pri etom ne garantiruetsya vysokaya skorost vypolneniya otdelnoj operacii vremya operacii INSERT v hudshem sluchae ocenivaetsya kak O n displaystyle O n Operaciya INSERT vypolnyaetsya dolgo kogda koefficient zapolneniya stanovitsya vysokim i neobhodimo perestroit indeks hesh tablicy Hesh tablicy plohi takzhe tem chto na ih osnove nelzya realizovat bystro rabotayushie dopolnitelnye operacii MIN MAX i algoritm obhoda vseh hranimyh par v poryadke vozrastaniya ili ubyvaniya klyuchej PrimechaniyaV JavaScript obekty podderzhivayut sozdanie svojstv s proizvolnym strokovym klyuchom takim obrazom oni realizuyut takzhe bazovye svojstva associativnogo massiva Sm Obekty kak associativnye massivy rus Uchebnik JavaScript Data obrasheniya 13 iyulya 2024 Arhivirovano 15 sentyabrya 2015 goda SsylkiNIST s Dictionary of Algorithms and Data Structures Associative Array NIST s Dictionary of Algorithms and Data Structures Association ListU etoj stati est neskolko problem pomogite ih ispravit V state ne hvataet ssylok na istochniki sm rekomendacii po poisku Informaciya dolzhna byt proveryaema inache ona mozhet byt udalena Vy mozhete otredaktirovat statyu dobaviv ssylki na avtoritetnye istochniki v vide snosok 8 oktyabrya 2006 Stil etoj stati neenciklopedichen ili narushaet normy literaturnogo russkogo yazyka Statyu sleduet ispravit soglasno stilisticheskim pravilam Vikipedii 2 fevralya 2020 Pozhalujsta posle ispravleniya problemy isklyuchite eyo iz spiska parametrov Posle ustraneniya vseh nedostatkov etot shablon mozhet byt udalyon lyubym uchastnikom

NiNa.Az

NiNa.Az - Абсолютно бесплатная система, которая делится для вас информацией и контентом 24 часа в сутки.
Взгляните
Закрыто