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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примечания

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

Ссылки

Read other articles:

Draw G's First BreathAlbum mini karya G.NADirilis14 Juli 2010Direkam2010GenreK-pop, pop, R&BDurasi17:24BahasaKoreaLabelCube Entertainment, Universal Music GroupKronologi G.NA Draw G's First Breath(2010) Black & White (2011)Black & White2011 Singel dalam album Draw G's First Breath Thing I'd Like to Do With My LoverDirilis: 5 Juli 2010 I'll Back Off So You Can Live BetterDirilis: 14 Juli 2010 Supa' SoloDirilis: Agustus 2010 Draw G's First Breath adalah album mini pertama pe...

 

Serge Lama pada Oktober 2012. Serge Lama (lahir Serge Claude Bernard Chauvier pada 11 Februari 1943 di Bordeaux)[1] merupakan seorang penyanyi dan penulis lagu Prancis. Lagunya yang paling terkenal adalah Je suis malade, ditulis bersama Alice Dona. Lagu ini ditulis untuk Dalida dan kemudian dibawakan oleh sejumlah artis termasuk Lara Fabian. Pada 1971, Lama mewakili Prancis dalam Kontes Lagu Eurovision dengan lagu Un jardin sur la terre, yang menempati urutan kesepuluh.[2] Dis...

 

12 Golden DucksPoster filmSutradaraMatt ChowProduserSandra NgPemeranSandra NgTanggal rilis 19 Februari 2015 (2015-02-19) Durasi84 menitNegaraHong KongBahasaKantonPendapatankotorHK$22.6 juta[1] 12 Golden Ducks (Hanzi sederhana: 12金鸭; Hanzi tradisional: 12金鴨) adalah film komedi Hong Kong tahun 2015 yang disutradarai oleh Matt Chow dan dibintangi oleh Sandra Ng.[2] Film ini dirilis pada tanggal 19 Februari 2015.[3][4] Pemeran Sandra Ng Louis K...

Pour les articles homonymes, voir BET. Cet article est une ébauche concernant une chaîne de télévision américaine. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Black Entertainment TelevisionCaractéristiquesCréation 1980, 1er juillet 1983Propriétaire Paramount Media NetworksSlogan Home of the RevolutionFormat d'image 480i, 1080iLangue AnglaisPays États-UnisStatut Chaîne spécialiséeSiège social Was...

 

For other uses of Broadway Theatre, see Broadway Theatre (disambiguation). The BroadwayThe Broadway TheatreAddressBroadwayBarking, London.EnglandCoordinates51°32′08″N 0°04′40″E / 51.5355°N 0.0777°E / 51.5355; 0.0777Public transit BarkingOwnerBarking & Dagenham CollegeTypeReceiving houseCapacity341 seated on two levels(840 standing)ConstructionOpened1936 (renovated 2004)ArchitectHerbert Jackson & Reginald Edmonds. Tim Foster Architects (2004 regenera...

 

1861 war memorial in Westminster, London Westminster Scholars War MemorialThe memorial, viewed from the dome on Methodist Central Hall, in 2014LocationLondonDesignerGeorge Gilbert ScottOpening date1861 Memorial in the angle between the west entrance to Westminster Abbey, and the gatehouse leading to Dean's Yard Detail of the floral capital, statues of Henry III and Elizabeth I, and the rear of St George and the dragon The Westminster Scholars War Memorial, also known as the Crimea and In...

ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Раннее христианство Гностическое христианство Вселенские соборы Н...

 

Australian musician Troy Cassar-DaleyBackground informationBorn (1969-05-18) 18 May 1969 (age 54)Surry Hills, New South Wales, AustraliaGenresCountryOccupation(s)Songwriter, singer, authorInstrumentsVocals, guitar, harmonicaYears active1990–presentLabelsSony Music, Liberation MusicWebsitewww.troycassardaley.com.auMusical artist Troy Cassar-Daley (born 18 May 1969) is an Australian country music songwriter and entertainer. Cassar-Daley has released thirteen studio albums, two live album...

 

Pour les articles homonymes, voir Vinokourov. Alexandre VinokourovAlexandre Vinokourov lors du Tour de Romandie 2011InformationsNoms courts Александр Винокуров, Alekszandr Vinokurov, Alexandre Vinokourov, Aleksandr Winokurow, Aleksandr VinokurovNaissance 16 septembre 1973 (50 ans)Beskol (en)Nationalité kazakheÉquipe actuelle Astana (manager général)Spécialités Puncheur, grimpeur, rouleurDistinction Ordre de la NoblesseÉquipes amateurs 1997EC Saint-Étienne Loire...

Keuskupan LimerickDioecesis LimericiensisDeoise LuimnighKatolik Katedral Santo Yohanes, LimerickLokasiNegara Republik IrlandiaProvinsi gerejawiProvinsi CashelStatistikLuas811 sq mi (2.100 km2)Populasi- Total- Katolik(per 2010)178.300171,000 (95.9%)Paroki60Imam121InformasiDenominasiKatolik RomaRitusRitus LatinKatedralKatedral Santo Yohanes, LimerickPelindungSt Munchin dan St ItaKepemimpinan kiniPausFransiskusUskupBrendan LeahyUskup agungKieran O'Reilly (...

 

فلوكسوريدين الاسم النظامي 5-Fluoro-1-[4-hydroxy-5-(hydroxymethyl)tetrahydrofuran-2-yl]-1H-pyrimidine-2,4-dione يعالج سرطان الأمعاء الغليظة  [لغات أخرى]‏،  وسرطان المعدة  اعتبارات علاجية ASHPDrugs.com أفرودة مدلاين بلس a682006 فئة السلامة أثناء الحمل D (الولايات المتحدة) طرق إعطاء الدواء حقن في الشريان مع...

 

Geometric theorem For the book about the paradox, see The Banach–Tarski Paradox (book). Can a ball be decomposed into a finite number of point sets and reassembled into two balls identical to the original? The Banach–Tarski paradox is a theorem in set-theoretic geometry, which states the following: Given a solid ball in three-dimensional space, there exists a decomposition of the ball into a finite number of disjoint subsets, which can then be put back together in a different way to yield...

Assistant Secretary of the Treasury was an office in the United States Department of the Treasury from 1849 until 1961 when it was replaced by the United States Assistant Secretary of the Treasury, one of several positions serving under the United States Secretary of the Treasury. History The office of Assistant Secretary of the Treasury was created by Act of March 3, 1849.[a] An Act of March 14, 1864 provided for an additional Assistant Secretary, as did an Act of July 11, 1890. An ...

 

Peta infrastruktur dan tata guna lahan di Komune Saint-Martin-Terressus.  = Kawasan perkotaan  = Lahan subur  = Padang rumput  = Lahan pertanaman campuran  = Hutan  = Vegetasi perdu  = Lahan basah  = Anak sungaiSaint-Martin-Terressus merupakan sebuah komune di departemen Haute-Vienne di Prancis. Lihat pula Komune di departemen Haute-Vienne Referensi INSEE lbsKomune di departemen Haute-Vienne Aixe-sur-Vienne Ambazac Arnac-la-Poste Augne Aureil Azat-le-Ri...

 

نهائي كأس ملك إسبانيا 2017احتضن ملعب فيسنتي كالديرون بمدريد النهائيالحدثكأس ملك إسبانيا 2016–17 برشلونة ديبورتيفو ألافيس 3 1 التاريخ27 مايو 2017 (2017-05-27)الملعبفيسنتي كالديرون، مدريدالحكمكارلوس كلوس غوميزالحضور45.000[1] → 2016 2018 ← نهائي كأس ملك إسبانيا 2017 هي المباراة الن�...

メタン IUPAC名メタン 別称沼気(しょうき)、天然ガス、エコガス(バイオガス) 識別情報 CAS登録番号 74-82-8 PubChem 297 ChemSpider 291 J-GLOBAL ID 200907011491248663 SMILES C InChI InChI=1/CH4/h1H4 特性 分子式 CH4 モル質量 16.042 g/mol 外観 常温で無色透明の気体 密度 0.717 kg/m3 気体415 kg/m3 液体 融点 -182.5 °C, 91 K, -297 °F 沸点 -161.6 °C, 112 K, -259 °F 水への溶解�...

 

У этого термина существуют и другие значения, см. Археология (значения). Археологические раскопки древнегреческой колонии Фанагория Археолог — или влюблённый, или поэт из «Записных книжек» А. Блока Археоло́гия (др.-греч. ἀρχαῖος «древний» + λόγος «слово, учение»)...

 

カレリア語 karjala話される国 ロシア フィンランド地域 カレリア話者数 約120,000人言語系統 ウラル語族 フィン・ウゴル語派フィン・ペルム諸語フィン・ラップ諸語バルト・フィン諸語カレリア語表記体系 ラテン文字公的地位少数言語として承認  カレリア共和国 フィンランド統制機関 なし言語コードISO 639-2 krlISO 639-3 krl消滅危険度評価 Definitely endangered (Moseley...

Cathedral located in Loire-Atlantique, in France This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Nantes Cathedral – news · newspapers · books · scholar · JSTOR (April 2020) (Learn how and when to remove this message) Cathedral of Saint Pierre and Saint PaulCathédrale Saint-Pierre-et-Saint-PaulNantes Cathedr...

 

「シナトラ」はこの項目へ転送されています。Ruby製のWebアプリケーションフレームワークについては「Sinatra」をご覧ください。 フランク・シナトラFrank Sinatra 1957年宣伝写真本名 フランシス・アルバート・シナトラ(Francis Albert Sinatra)生年月日 (1915-12-12) 1915年12月12日没年月日 (1998-05-14) 1998年5月14日(82歳没)出生地 アメリカ合衆国ニュージャージー州ホーボーケン死�...