[MUSIC PLAYING] DOUG LLOYD: İndi siz Diziler haqqında çox bilmək, və bağlı siyahıları haqqında bir çox bilirik. Və biz müzakirə etdik lehte ve eksiklikleri, biz siyahıları bağlı ki, müzakirə böyük və kiçik əldə edə bilərsiniz, lakin onlar daha ölçüsü almaq. Diziler daha sadə var istifadə, lakin onlar qədər məhdudlaşdırıcı istəyirik biz ölçüsünü təyin etmək kimi çox başında array sonra biz ilə vurulmuş edirik. Amma ki, biz olduqca çox var var, Bizim mövzular bütün canı bağlı siyahıları və Diziler haqqında. Yoxsa biz var? Bəlkə biz bir şey edə bilərsiniz daha yaradıcı. Və verir ki, sort bir hash masa ideyası. Belə ki, bir hash masa biz cəhd olacaq bir bağlı siyahı ilə bir sıra birləşdirir. Biz üstünlükləri olacaq serialın, təsadüfi giriş kimi, yalnız array getmək üçün qadir olan element 4 və ya array element 8 üzrə təkrarlamaq olmadan. Bu doğru, olduqca sürətli var? Amma biz də məlumatlar var istəyirəm strukturu inkişaf və shrink edə bilərsiniz. Biz deyil, ehtiyac yoxdur məhdudlaşdırılacaq istəyirik. Və biz etmək istəyirəm əlavə və hər şeyi aradan qaldırılması üçün çox asanlıqla, siz geri əgər, bir sıra ilə çox mürəkkəbdir. Və biz bu zəng edə bilərsiniz yeni bir şey bir hash masa. Əgər düzgün tətbiq biz növ alaraq edirik həm də məlumatların üstünlükləri Əgər siz artıq gördüm strukturları, Diziler və bağlı siyahıları. Taxmaq başlaya bilərsiniz 1 teta doğru edirlər. Theta biz, həqiqətən, müzakirə deyil, lakin teta yalnız orta olduğu, nə həqiqətən baş verəcək. Siz həmişə fikrində deyilik ən pis halda ssenari var, və həmişə fikrində deyilik Ən yaxşı ssenari, belə ki, nə var orta ssenari? Yaxşı bir orta durub bir hash masa yaxın daimi vaxt almaq üçün başlaya bilərsiniz. Və silinməsi əldə edə bilərsiniz daimi zaman bağlayın. Və Sistemi əldə edə bilərsiniz daimi zaman bağlayın. That bir məlumat yoxdur strukturu hələ ki, bunu edə bilərsiniz, və bu, artıq səslər olduqca böyük şey kimi. Biz, həqiqətən, yumşaldılmasına etdik öz hər mənfi cəhətləri. Bu performansı almaq üçün , baxmayaraq ki biz təkmilləşdirmək biz əlavə nə yenidən etmək lazımdır strukturu data. Xüsusilə biz istəyirik data özü bizə harada strukturunda getməlidir. Və biz o var görmek üçün lazımdır, əgər strukturu, biz tapmaq lazımdır, biz məlumatların baxmaq istəyirəm yenidən və səmərəli edə bilər, veri istifadə edərək, təsadüfi daxil. Just baxaraq data biz olmalıdır məhz biz olduğunuz bir fikir hash masa tapmaq üçün gedir. Bir hash İndi İşin mənfi tərəfi odur masa həqiqətən istəyirik ki, sifariş və ya data çeşidlənməsi olduqca pis. Və əslində, siz başlamaq əgər sifariş və ya sort üçün onlara istifadə etmək data bütün itirmək üstünlükləri əvvəllər durub və silinməsi baxımından idi. vaxt yaxın olur n teta, və biz əsasən var bir bağlı siyahısına daxil gerilədi. Və belə ki, biz yalnız hash istifadə etmək istədiyiniz masalar biz qayğı yoxdur, əgər data çeşidlənir olub. Kontekstində olan CS50 onları istifadə edəcəyik Siz yəqin ki, qayğı yoxdur data çeşidlənir ki. Belə ki, bir hash table bir birləşməsidir iki fərqli ədəd olan biz tanış edirik. ilk funksiyası olan biz adətən bir hash funksiyası zəng. Və hash funksiyası gedir , bəzi qeyri-mənfi tam qayıtmaq hansı biz adətən OK, bir hashcode zəng? ikinci parça bir sıra edir tipli biz saxlanılması məlumatların bilən data strukturu yerləşdirmək istəyirəm. Biz off keçirmək lazımdır İndi siyahısı element bağlıdır və yalnız bir əsasları ilə başlamaq onun ətrafında baş almaq üçün masa hash, sonra biz bəlkə zərbə olacaq fikrinizi bir az zaman birlikdə Diziler və link siyahıları birləşdirir. əsas fikir olsa bəzi məlumatları almaq deyil. Biz data vasitəsilə run hash funksiyası. Və belə data emal və OK, bir sıra spits? Və sonra sayı biz yalnız veri biz saxlamaq istəyirəm ki, yeri array. Belə ki, məsələn, biz bəlkə var strings bu hash masa. Bu, belə ki, bu 10 elementlər var biz onu 10 strings uyğun bilər. Biz John hash istəyirəm deyirlər. John Belə ki, data kimi biz əlavə etmək istəyirəm haradasa bu hash masa. Harada biz qoymaq bilərəm? Yaxşı adətən ilə array günə qədər biz yəqin ki, array yeri 0 onu qoymaq olardı. Amma indi biz bu yeni hash funksiyası var. Və biz John run ki, bildirin Bu hash funksiyası vasitəsilə və 4 spits oldu. Biz olduğunuz yaxşı ki var John qoymaq istəyirəm olacaq. Biz array yeri Yəhya qoymaq istəyirəm 4, biz again-- John hash, çünki nin sonra biz deyək axtarış və görmək istəyirik John bu hash varsa biz nə etmək lazımdır bütün Masa Eyni hash vasitəsilə idarə olunur funksiyası, sayı 4 çıxmaq və John tapa biləcəklər dərhal data strukturu. Bu olduqca yaxşı. Biz indi bunu deyirlər yenə biz Paulun hash istəyirik. Biz Paul əlavə etmək istədiyiniz Bu hash masa. Bu dəfə biz run deyirlər Hash funksiyası vasitəsilə Paul, yaradılan hashcode 6. Yaxşı indi biz Paul qoya bilər array yeri 6. Və biz olmadığını baxmaq lazımdır Paul bu hash masa var, biz nə etmək lazımdır bütün Paul run hash funksiyası vasitəsilə yenidən və biz yenə 6 almaq olacaq. Və sonra biz yalnız baxmaq array yeri 6. Paul varmı? Əgər belədirsə, o, hash masa var. Paul yoxdur? O, hash cədvəldə deyil. Bu olduqca sadə. İndi necə bir hash funksiyası müəyyən edirsiniz? Yaxşı həqiqətən heç bir limit var mümkün hash funksiyalarının sayı. Əslində bir sıra həqiqətən var internet, həqiqətən, yaxşı olanları. Bir sıra həqiqətən var internet, həqiqətən, pis olanları. O, həmçinin olduqca asandır pis bir yazmaq. Belə ki, nə bir yaxşı təşkil edir hash funksiyası, sağ? Yaxşı yaxşı hash funksiyası olmalıdır yalnız data hashed olunur istifadə, və məlumatların bütün hashed olunur. Beləliklə, biz anything-- istifadə etmək istəmirəm biz bir şey daxil deyil data başqa başqa. Biz data bütün istifadə etmək istəyirik. Biz yalnız bir parça istifadə etmək istəmirəm bu, biz bunu bütün istifadə etmək istəyirik. A hash funksiyası olmalıdır də deterministic olun. Bunun mənası nədir? Yaxşı o deməkdir ki, hər dəfə biz məlumatların eyni parça keçmək hash funksiyası daxil biz həmişə Eyni hashcode çıxmaq. Mən daxil John keçmək əgər hash funksiyası Mən 4 çıxmaq. Mən bunu etmək lazımdır 10,000 dəfə və mən həmişə 4 almaq lazımdır. Belə ki, heç təsadüfi nömrələri səmərəli Bizim hash cəlb edilə bilər tables-- Bizim hash funksiyaları. A hash funksiyası da olmalıdır uniformly məlumat yaymaq. Hər zaman vasitəsilə məlumat çalıştırıyorsanız hash funksiyası, hashcode 0 almaq doğru, yəqin ki, o qədər də böyük deyil? Siz yəqin ki, böyük istəyirəm hash kodları bir sıra. Həmçinin şeyi yayılmışdır bilər masa ərzində həyata. Və həmçinin, əgər həqiqətən böyük olacaq John və Yonatan kimi oxşar məlumatlar, bəlkə çəkin yayılmışdır edildi hash cədvəldə müxtəlif yerlərdə. Ki, bir gözəl üstünlüyü olacaq. Burada hash funksiyası bir misal var. Mən əvvəllər bu bir qədər yazdı. Bu xüsusilə deyil yaxşı hash funksiyası həqiqətən, yoxdur səbəblərə görə İndi gedən daşıyırlar. Amma burada nə olub görürsünüz? Biz bir dəyişən elan edirik kimi görünür məbləği və 0-a bərabər qəbulu çağırıb. Və sonra yəqin mən bir şey edirəm belə uzun strstr [j] bərabər deyil 0 backslash üçün. Mən orada nə edirəm? Bu əsasən yalnız başqa [həyata keçirilməsi yolu? Strl?] Siz var zaman aşkar simli sona gəlindi. Belə ki, Mən, həqiqətən, yoxdur simli uzunluğu hesablamaq, Mən hit zaman mən yalnız istifadə edirəm backslash 0 xarakter bilirəm Mən simli sonunda əldə etdiyiniz. Və sonra mən saxlamaq üçün gedirəm ki, simli vasitəsilə iterating, strstr [j] əlavə sonra yekunlaşdırmaq, və Günün sonunda məbləği mod geri olacaq HASH_MAX. Əsasən bütün bu hash funksiyası əlavə olunur edir ASCII dəyərləri bütün Mənim string, sonra var bəzi hashcode qaytarılması HASH_MAX tərəfindən modded. Bu yəqin ki, ölçüsü var Mənim serialın, sağ? Mən hash əldə etmək istəmirəm kodları mənim array ölçüsü 10 olduqda, Mən əldə olmaq istəmirəm həyata hash kodları 11, 12, 13, mən daxil şeyi qoymaq bilməz serialın o locations, ki, qeyri-qanuni ola bilər. Mən bir seqmentasiya günah əziyyət ediyorum. İndi burada bir sürətli kənara edir. Ümumiyyətlə siz yəqin ki, fikrində deyilik öz hash funksiyaları yazmaq istəyirəm. Bu, həqiqətən bir az bir sənət, bir elm. Onların gider bir çox var. Dediyim kimi internet, tam həqiqətən yaxşı hash funksiyaları, və internet istifadə etməlidir Bu, həqiqətən, çünki hash funksiyaları tapmaq yalnız cür gərəksiz vaxt itkisi öz yaratmaq. Siz sadə olanları yaza bilərsiniz məqsədləri test üçün. Amma əslində gedən zaman məlumat hashing və saxlanılması başlamaq Siz bu hash masa yəqin ki, istəyirəm olacaq istehsal edilmişdir bəzi funksiyadan istifadə etmək Sizin üçün ki, internet mövcuddur. Yalnız əmin olun deyilsə Sizin mənbələri istinad. Heç bir səbəb üçün var burada bir şey plagiarize. informatika icma edir mütləq dəyərlər artan və həqiqətən açıq mənbə və bu, həqiqətən vacibdir Sizin mənbələri istinad ki, insanlar üçün attribution əldə edə bilərsiniz onlar iş cəmiyyətin xeyrinə edirik. Belə ki, həmişə sure-- ola və yalnız hash üçün funksiyaları, lakin ümumiyyətlə zaman bir kənarda mənbədən kodu istifadə, həmişə mənbə istinad. Etdi şəxsə kredit vermək iş bəzi belə yoxdur. OK, belə ki, bu yenidən edək ikinci hash masa. Biz sol yerdir biz daxil sonra Bu hash masa John və Paul. Burada bir problem görürsünüzmü? Siz iki görə bilərsiniz. Amma xüsusilə, siz Bu mümkün problem görmək? Mən Ringo hash və əgər sonra emal çıxır ki, hash funksiyası vasitəsilə data Ringo də hashcode 6 yaradılan. Mən artıq data var hashcode-- array yeri 6. Belə ki, yəqin ki, bir az olacaq İndi mənim üçün bir problem, sağ? Biz toqquşma çağırırıq. Və toqquşma iki baş verir məlumatların ədəd eyni hash vasitəsilə run funksiyası eyni hashcode verir. Ehtimal biz hələ də almaq istəyirəm hash masa məlumatların ədəd, əks halda biz Ringo çalışan olmaz özbaşına hash funksiyası vasitəsilə. Biz ehtimalla almaq istəyirəm Ki array daxil Ringo. Biz baxmayaraq bunu necə, o, əgər və Paul, həm də gəlir hashcode 6? Biz Paul yazmaq istəmirəm, biz Paul orada olmaq istəyirəm. Beləliklə, biz almaq üçün bir yol tapmaq lazımdır hash masa elementləri ki hələ bizim sürətli qoruyur durub və göz atınız up. Və onunla məşğul bir yol var probing xətti deyilən bir şey yoxdur. Bir varsa, bu metodu istifadə edərək toqquşma, yaxşı, biz nə etməliyəm? Yaxşı array yeri onu qoymaq bilməz 6, və ya hər hansı hashcode istehsal edilmişdir, nin hashcode plus 1 onu qoymaq bildirin. Və tam edək, əgər hashcode plus 2 onu qoydu. Bu varlığın fayda o əgər tam biz o hesab edirəm olduğu, və biz axtarış başlamaq üçün, bəlkə biz çox uzaq getmək yoxdur. Bəlkə biz axtarış yoxdur hash masa bütün n elementləri. Bəlkə biz axtarış Onların bir neçə. Və belə ki, biz hələ doğru meyl edirik orta işi 1 yaxın vs gedir n yaxın, belə ki, bəlkə ki, işləmək lazımdır. Belə ki, necə bu görək əslində iş bilər. Və bəlkə biz aşkar edə bilərsiniz əgər in görək Burada baş verə bilər problem. Biz Bart hash deyirlər. Belə ki, indi biz yeni bir sıra çalıştırmak olacaq hash funksiyası vasitəsilə strings, və biz hash vasitəsilə Bartın run funksiyası, biz hashcode 6 almaq. Biz bir nəzər, biz 6 görmək boş, belə ki, biz orada Bart bilər. İndi biz Lisa və hash də hashcode 6 yaradır. Yaxşı indi biz bu istifadə etdiyiniz ki, xətti, biz 6-da başlayacaq metodu yoxlamağa biz 6 dolu olduğunu görürük. Biz 6 Lisa qoymaq bilməz. Beləliklə, biz getmək yoxdur? 7 gedək. 7-nin boş, belə işləyir. Belə ki, orada Lisa qoymaq bildirin. İndi biz Homer hash və 7 almaq. OK, biz bilirik 7-nin tam ki, İndi, belə ki, biz orada Homer qoymaq bilməz. Belə ki, 8 gedək. 8 bilər? Bəli, və 7 8 yaxın, belə ki, əgər Biz istəyirik axtarış başlamaq üçün çox uzaq getmək üçün var niyyətində deyil. Və belə ki, 8 Homer qoymaq bildirin. İndi biz hash Maggie və 3 qaytarır şükür biz yalnız orada Maggie qoymaq istəyirik. Biz heç nə yoxdur sort ki yoxlamağa. İndi biz Marge hash və Marge də 6 qaytarır. Yaxşı 6, 8 dolu, 7 tam, tam 9, bütün sağ 9 boş, Allaha şükür. Mən 9 Marge bilər. Onsuz da biz başlanğıc etdiyiniz görə bilərsiniz biz istəyirik indi bu problem cür şeyi uzanır başlayır uzaq onların hash kodları. Və 1 ki teta ki, orta daimi vaxt olan halda, bir az more-- almaq üçün başlayır bir az daha meyli başlayaraq n teta doğru. Biz ki, itirmək üçün başlanğıc edirik hash masalar üstünlüyü. Biz yalnız gördüm bu problem klasterləşmə deyilən bir şey var. Və həqiqətən pis nə var klasterləşmə ki, sizin bir dəfə indi yan iki elementləri ilə var bu, daha çox edir yan, Siz ikiqat şans, siz olacaq başqa toqquşma var ki çoxluq ilə, və cluster biri artacaq. Və artan və artan saxlamaq lazımdır bir toqquşma olan sizin ehtimalı. Və nəticədə bu kimi pis kimi bütün məlumatların çeşidlənməsi deyil. digər problem olsa biz hələ və bu günə qədər bu nöqtəyə qədər, biz yalnız növ oldum bir hash table nə anlama, biz hələ yalnız 10 strings üçün otaq var. Biz hash davam etmək istəyirsinizsə, Springfield vətəndaşları, biz yalnız orada onlardan 10 əldə edə bilərsiniz. Və biz cəhd və bir 11-ci və ya 12 əlavə biz onları qoymaq üçün bir yer yoxdur. Biz yalnız ətrafında iplik bilər dairələr, boş spot tapmaq üçün çalışırıq və biz bəlkə takılıyorum sonsuz loop. Belə ki, fikir verir bu cür bir şey chaining çağırıb. Və bu gətirmək olacaq harada geri şəkil bağlı siyahıları. Nə əvəzinə yalnız saxlanılması array data özü, serialın hər element bilər çox ədəd məlumatların keçirəcək? Yaxşı ki, sağ mənada etmir? Biz ki, bir sıra yalnız bilirik bir sıra hər bir element hold-- yalnız bir parça aça bilər ki, data növü məlumatların. Amma nə əgər data type bir bağlı siyahı sağ, var? Belə ki, nə əgər hər serialın element idi bir bağlı siyahı rəhbəri bir göstərici? Və sonra biz qurmaq bilər bu bağlı siyahıları və özbaşına onların inkişaf bağlı siyahıları imkan verir, çünki Bizə inkişaf və daha çox shrink bir sıra edir çevik çox. Belə ki, nə biz indi istifadə əgər, biz doğru, bu leverage? Biz bu zəncirlər inkişaf başlamaq bu array yerlərdə həyata. İndi biz sonsuz uyğun data məbləği, və ya sonsuz deyil, bir ixtiyari məbləği data, bizim hash masa Heç daxil çalışan olmadan Toqquşmanın problem. Biz də aradan sonra bu etməklə klasterləşmə. Və biz biz daxil zaman bilirik ki, bir bağlı siyahısına daxil, siz geri əgər story bağlı siyahıları bizim video bağlı siyahıları və ikiqat bağlı siyahıları, bu, daimi vaxt əməliyyat var. Biz yalnız ön əlavə edirik. Və baxmaq qədər, biz bilirik ki, bir bağlı siyahısında baxmaq sağ, bir problem ola bilər? Biz vasitəsilə axtarış əvvəldən sona. Heç bir təsadüfi var bir bağlı siyahı giriş. Amma əgər əvəzinə bir olan bağlı bir axtarış n Ey olardı siyahısı biz indi 10 bağlı siyahıları var, və ya 1000 bağlı siyahıları, indi 10 bölünür n O var, və ya n O 1000 bölünür. Və biz söhbət isə nəzəri mürəkkəbliyi haqqında biz real, sabitləri ardı bunlar həqiqətən məsələ dünya, sağ? Biz, həqiqətən, görəcəksiniz bu olur ki, daha sürətli 10 dəfə çalıştırmak üçün, və ya 1000 dəfə daha sürətli, biz uzun bir paylayaraq, çünki 1000 kiçik zəncirlər arasında zəncir. Və belə ki, biz hər zaman axtarmaq üçün biz o zəncirlər biri ilə biz qayğı yoxdur 999 zəncirlər ignore haqqında, və yalnız bir axtarış. Hansı orta edir 1000 dəfə qısa ola bilər. Və belə ki, biz hələ sort var Bu orta halda doğru baxma daimi vaxt olan, lakin yalnız biz yararlanarak, çünki bəzi böyük daimi amil bölünməsi. Bu necə ola bilər Baxaq həqiqətən baxmayaraq baxmaq. Belə ki, bu biz idi hash table idi bir hash masa elan əvvəl 10 strings saxlanılması qadir idi. Biz artıq bunu etmək fikrində deyilik. Biz artıq bilirik ki, metodu məhdudiyyətlər. İndi bizim hash table olacaq 10 qovşaqlarının, göstəricilər bir sıra bağlı siyahıları rəhbərlərinə. Və indi bu null. Bu 10 göstəricilər hər bir null edir. Heç bir şey bizim var var İndi masa hash. İndi bəzi qoymaq başlamaq edək Bu hash masa şeylər. Və bu üsul necə edək Bizə bir az fayda gedir. İndi Joey hash edək. Biz simli Joey vasitəsilə davam edəcək lazımdır bir hash funksiyası və biz 6 qayıtmaq. Yaxşı indi nə etməliyəm? Yaxşı indi bağlı siyahıları ilə iş, biz serialların ilə iş deyilik. Və biz çalışırıq zaman bağlı siyahıları ilə biz biz dinamik başlamaq lazımdır bilirik space və tikinti zəncirlər bölüşdürülməsi. Ki, sort o əsas var how-- var bir bağlı siyahı bina elementləri. Belə ki, dinamik edək Joey üçün yerin ayrılması, Və sonra zəncir ona əlavə edək. Belə ki, indi biz etdik nə baxmaq. Biz Joey hash zaman hashcode 6 var. Array yeri 6 İndi pointer bir bağlı siyahı başı göstərir, və indi yalnız var bir bağlı siyahı element. Və ki, node bağlı siyahı Joey edir. Biz Joey baxmaq lazımdır, belə ki, sonra, biz yalnız yenidən Joey hash, biz bizimdir bizim çünki yenidən 6 almaq hash funksiyası deterministic edir. Və sonra biz baş-da başlayacaq bağlı siyahı işarə array yeri ilə 6 və biz təkrarlamaq bilər Joey tapmaq üçün çalışırıq ki, rast. Və biz qurmaq bizim səmərəli masa hash, və hash funksiyası səmərəli yaxşı məlumat yaymaq, orta hesabla o hər bağlı hər array yerdə siyahıları əgər ölçüsü 1/10 olacaq biz yalnız bir böyük kimi idi bu hər şeyi ilə bağlı siyahısı. Biz böyük bağlı olduğunu yaymaq 10 bağlı siyahıları arasında siyahısı Hər bir siyahı 1/10 ölçüsü olacaq. Və beləliklə 10 dəfə daha sürətli vasitəsilə axtarış. Belə ki, bir daha bunu edək. İndi Ross hash edək. Və biz bunu zaman Ross, deyək biz geri almaq hash kodu 2. Yaxşı indi biz dinamik bir ayrılması yeni node, biz ki, node Ross qoymaq və biz array yer indi demək 2 null işarə əvəzinə, bir bağlı rəhbəri göstərir yeganə node siyahısı Ross edir. Və biz, biz bu dəfə daha edə bilərsiniz Rachel hash və hashcode 4 əldə edə bilərsiniz. Rachel qoymaq, yeni node malloc node və array yeri demək 4 indi baş işarə Onun bir bağlı siyahı yalnız element Rachel olmaq olur. OK lakin nə olur biz bir toqquşma var? Biz toqquşma idarə necə görmək edək ayrı-ayrı chaining metodundan istifadə. Nin Phoebe hash edək. Biz hashcode 6 almaq. Əvvəlki nümunədə biz yalnız idi serialda strings saxlanılması. Bu bir problem idi. Biz döymək istəmirəm Joey, və biz artıq var bəzi klasterləşmə əldə edə bilərsiniz ki, gördük problemlərini cəhd və addım vasitəsilə və sonda. Amma nə əgər biz yalnız növ bu hüquqa eyni şəkildə müalicə? Bu, sadəcə bir element əlavə kimi bir bağlı siyahı rəhbəri. Phoebe üçün yalnız malloc yer edək. Biz Phoebe növbəti pointer xal demək lazımdır bağlı siyahı köhnə rəhbəri, və sonra 6 yalnız işarə bağlı siyahı yeni rəhbəri. İndi biz Phoebe dəyişdirdik, baxmaq. Biz indi iki bilərsiniz hashcode 6 elementləri, və hər hansı bir problem yoxdur. Olduqca çox bütün var zəncirləmə var. Və chaining mütləq deyil metodu əgər üçün ən effektiv olacaq Bir hash masa məlumatların saxlanılması olunur. Amma bu birləşməsi Diziler və bağlı siyahıları birlikdə həqiqətən bir hash masa yaratmaq üçün dramatik sizin qabiliyyətini artırır məlumatların böyük həcmdə saxlamaq, və çox tez və səmərəli axtarış ki, data vasitəsilə. Bir daha hələ var Orada data structure ki, hətta bir az ola bilər, təmin baxımından daha yaxşı ki, bizim durub, silinməsi, və yuxarı baxmaq dəfə daha sürətli edir. Və biz çalışır bir video görəcəksiniz. Mən Doug Lloyd deyiləm, bu CS50 edir.