Hər bir proqramçının gücü onun biliyindədir. Bəli, google-da yaxşı işləmək bacarığı da sonuncu yerdə deyil, lakin buna baxmayaraq, tərtibatçının düşüncə tərzinin formalaşdığı müəyyən miqdarda bilik olmalıdır. Bu bilik nə qədər dərin olsa, proqramçı bir o qədər maraqlı həllər tapa bilər. Belə bir “əsas”ın hissələrindən biri məlumat strukturları və alqoritmlərdir. Bu istiqamətdə biliklərinizi necə genişləndirə bilərsiniz? Bir seçim olaraq, bilikləri odadavamlı bir ehtiyat və gələcək öyrənmə üçün təməl olacaq bir kitab tapın. Mənim üçün belə bir kitab Robert Laforetin “Java Data Structures and Alqoritmləri” kitabı idi .
Kimin üçün
Bu kitabın auditoriyası çox geniş insanlar ola bilər, çünki o, həm Java dilinin sintaksisini yenicə mənimsəmişlər , həm də praktik proqramçılar üçün məlumat strukturlarının və alqoritmlərinin xüsusiyyətlərini daha dərindən başa düşmək üçün faydalı olacaqdır. .Nə haqqında
Bu kitab proqramlaşdırmada verilənlər strukturlarının və alqoritmlərinin öyrənilməsinə və istifadəsinə həsr edilmişdir. O, oxucuya verilənlər strukturlarının verilənlərin yaddaşda necə təşkil olunduğunu və alqoritmlərin bu strukturlar üzərində müxtəlif əməliyyatları necə yerinə yetirdiyini öyrədəcək. Gəlin bir az da dərinləşək və görək bu kitab nədən bəhs edir:- Massivlər. Massivlərdə və sıralanmış massivlərdə daxil etmə, axtarış və silmə əməliyyatları ətraflı şəkildə əhatə olunur. Sıralı və nizamsız massivlər üçün xətti və ikili axtarışın işini nümayiş etdirir. Siz həmçinin O-sintaksisinin nə olduğunu öyrənəcəksiniz.
- Çeşidləmə. Üç sadə çeşidləmə üsulu nəzərdən keçirilir: “baloncuk çeşidləmə”, “seçmə çeşidləmə”, “daxiletmə çeşidi”. Kitabdan hansının ən yavaş, hansının ən sadə olduğunu öyrənəcəksiniz.
- Yığınlar və növbələr. Yığın, növbə və prioritet növbə kimi məlumat strukturları, onların effektivliyi və Java-da tətbiqi nəzərdən keçirilir.
- Əlaqədar siyahılar. Kitabda ikiqat əlaqəli və iki istiqamətli siyahılar, onların effektivliyi və daxiletmə, axtarış və silmə əməliyyatlarının necə yerinə yetirildiyi haqqında danışılır. İteratorlar və onların tələb etdiyi üsullar da əhatə olunur.
- Rekursiyalar. Rekursiyalar müxtəlif situasiyalarda nəzərdən keçirilir, məsələn: üçbucaqlı ədədlərin və faktorialların hesablanması, anaqramların qurulması, rekursiv ikili axtarışın həyata keçirilməsi, Hanoy qalası tapmacasının həlli, birləşmə çeşidinin həyata keçirilməsi, çanta probleminin həlli.
- Qeyri-trivial çeşidləmələr. Daha təkmil üsullar nəzərdən keçirilir: Shell sort, fast sort və radix sort, onların alqoritmləri, səmərəliliyi.
- İkili ağaclar. Balanslaşdırılmış binar axtarış ağacları, necə işlədikləri, daxil etmə və silmə əməliyyatları, müxtəlif növ keçidlər, minimum və maksimum axtarışı, davamçı axtarışı nəzərdən keçirilir. Huffman kodeksi də əhatə olunacaq.
- Qırmızı və qara ağaclar. Biz balanslaşdırılmış ağacların ən təsirli növlərindən birini, onların fırlanma və balanslaşdırma üçün zəruri olan rəng dəyişdirmə əməliyyatlarını hesab edirik.
- Ağaclar 2-3-4. Bu tip ağaclar çoxyollu ağaclara misal olaraq təsvir edilir, onların işləməsi və xarici məlumatların saxlanması üçün istifadə olunan B-ağacları ilə əlaqəsi müzakirə olunur.
- Hash cədvəlləri. Hashing və onun müxtəlif üsulları, məsələn, xətti və kvadratik zondlama, ikiqat hashing və zəncirləmə metodu əhatə olunur. Xarici fayl yaddaşını təşkil etmək üçün hashing-in necə istifadə oluna biləcəyini də öyrənə bilərsiniz.
- Piramidalar. Bu, prioritet növbələri səmərəli şəkildə həyata keçirmək üçün istifadə edilən xüsusi bir ağac növüdür. Kitabda daxiletmə, silmə və yenidən təşkil etmənin işləmə mexanizmləri müzakirə olunur. Siz həmçinin piramidal permutasiyanın nə olduğunu və onun Java-da necə həyata keçirilə biləcəyini öyrənəcəksiniz.
- Qrafiklər. Çəkili və çəkilməmiş qrafiklər, onların axtarışı üçün alqoritmlər və ən qısa keçid yollarını tapmaq üçün istifadə olunan alqoritmlər təqdim olunur.
Workshop proqramları nədir
Bu strukturları və alqoritmləri nümayiş etdirmək üçün seminar proqramlarından istifadə olunur . Proqramlar brauzerdə işlədilə bilən Java proqramları kimi tərtib edilmişdir. Seminar proqramları alqoritmin və ya verilənlər strukturunun necə işlədiyini göstərən qrafik diaqramlar yaradır. Məsələn, artan qaydada sıralanmış sütunları göstərmək üçün nəzərdə tutulmuş bir proqramda hər dəfə histoqramda düyməni basdığınız zaman növbəti addım yerinə yetiriləcək. Bu halda, bu alqoritmdə iştirak edən dəyişənlərin dəyərləri göstəriləcək ki, kodun necə icra olunduğunu görə biləsiniz (saxtalayıcının təsvirini xatırladır , elə deyilmi?).Workshop-u necə yükləmək və quraşdırmaq olar
- Siz appletləri buradan yükləyə bilərsiniz .
- WorkshopApplets.ZIP üzərinə klikləyin və arxivi appletlərlə yükləyin.
- Apletləri başa düşmək üçün bu mövzunu və ona verilən şərhləri oxuya bilərsiniz .
Kitabın müsbət tərəfləri
- oxumaq çox asandır, bir çox nümunə demək olar ki, "barmaqlarınızda" izah olunur;
- mürəkkəb riyazi düsturlardan istifadə etmədən gözlərinizi bir çox “klassik” şeylərə açır. Demək olar ki, onlarsız :)
- Nümunələr Java-da olsa da, kodda baş verən hərəkətlər aşağıdakı mətn və koddakı şərhlərlə çox ətraflı izah olunur. Buna görə də, onu istənilən proqramlaşdırma dilinin istifadəçisi oxuya bilər, çünki kod nümunələri olduqca sadədir: demək olar ki, psevdokod kimi oxuyurlar.
Kitabın mənfi cəhətləri
- “Barmaqlarda” izahına baxmayaraq, orada boşluqlar var. Massivlərin çeşidlənməsini izah etmək üçün müəllif futbol komandasının şəklini çəkir, lakin orada Shell çeşidlənməsi praktiki olaraq təsvir olunmur: Mən bunu başa düşə bilmədim və internetdə oxuya bilmədim;
- Adətən şəkillərdə və ya cədvəllərdə yazı səhvləri ola bilər;
- bəzi kodlar olduqca köhnəlmişdir.
Analoqlar
Bu kitabın analoqlarını və ya ondan sonrakıları tövsiyə edirəm (təhsilini davam etdirmək istəyənlər üçün):- Robert Sedgwick tərəfindən "Java-da alqoritmlər";
- Tomas Kormen tərəfindən "Alqoritmlər: Quraşdırma və Təhlil".
GO TO FULL VERSION