CodeGym /Kurslar /Python SELF AZ /Alqoritm və məlumat strukturları anlayışı

Alqoritm və məlumat strukturları anlayışı

Python SELF AZ
Səviyyə , Dərs
Mövcuddur

1.1 Alqoritm nədir

python alqoritm

Alqoritm – müəyyən bir problemi həll etmək ya da spesifik bir tapşırığı yerinə yetirmək üçün nəzərdə tutulan aydın və dəqiq şəkildə müəyyən edilmiş addımlar və ya təlimatlar ardıcıllığıdır. Alqoritmin hər bir addımı anlaşılan və dəqiq olmalıdır, və alqoritmin icrası məhdud zaman ərzində müəyyən nəticəyə gətirməlidir.

Alqoritm nə üçün lazımdır:

  • Problemlərin həlli: Alqoritmlər müxtəlif məsələlərin sistematik şəkildə həll edilməsi üçün imkan yaradır, sadə riyazi əməliyyatlardan tutmuş mürəkkəb hesablamalara qədər.
  • Proseslərin avtomatlaşdırılması: Alqoritmlər proqram təminatında tapşırıqların avtomatlaşdırılması üçün zəruridir, bu insan müdaxiləsi olmadan təkrarlanan əməliyyatların yerinə yetirilməsinə imkan yaradır.
  • Resursların optimallaşdırılması: Düzgün dizayn edilmiş alqoritmlər icra müddəti və yaddaş kimi resursların effektiv istifadəsinə kömək edir.
  • Təkrarlılıq və etibarlılıq: Alqoritmlər nəticələrin təkrarlanmasını və proqnozlaşmasını təmin edir ki, bu da etibarlı proqram təminatının inkişafı üçün vacibdir.

Nümunələr:

  • Gündəlik işlər: Məsələn, səhər rutini alqoritmi – oyanmaq, dişləri yumaq, səhər yeməyi hazırlamaq və sair.
  • Riyazi əməliyyatlar: İki ədədin ən böyük ortaq bölənini (ƏOB) tapmaq üçün alqoritm.
  • Kompüter proqramları: Sıralama alqoritmləri (məsələn, bubble sort) və axtarış alqoritmləri (məsələn, binary search).

1.2 Məlumat strukturu nədir

Məlumat strukturu – bu, məlumatların təşkil və saxlanma üsuludur, hansı ki onların səmərəli istifadə və emal edilməsinə imkan verir. Müxtəlif məlumat strukturları fərqli tip tapşırıqlar və əməliyyatlar üçün nəzərdə tutulub.

Python məlumat strukturu

Məlumat strukturları niyə lazımdır:

  • Məlumatların səmərəli idarə olunması: Məlumat strukturları məlumatları elə təşkil etməyə imkan verir ki, onlara tez və səmərəli şəkildə giriş əldə edilsin, dəyişdirilsin və ya silinsin.
  • Alqoritmlərin optimallaşdırılması: Müxtəlif məlumat strukturları fərqli alqoritmlər üçün uyğundur və düzgün məlumat strukturunun seçilməsi alqoritmin səmərəliliyini xeyli artıra bilər.
  • Proqramlaşdırma rahatlığı: Düzgün məlumat strukturlarından istifadə kodu daha aydın, dəstəklənən və genişləndirilə bilən edir.
  • Spesifik tapşırıqların həlli: Bəzi məlumat strukturları xüsusi tapşırıqların həlli üçün nəzərdə tutulub, məsələn, sürətli axtarış üçün hash-cədvəllər və ya ierarxik məlumatlar üçün ağaclar.

Nümunələr:

  • Massivlər: Eyni tip elementlərdən ibarət dəst, hansı ki, onlara indeks üzrə giriş əldə etmək mümkündür.
  • Bağlı siyahılar: Hər biri növbəti elementə istinad edən elementlər kolleksiyası.
  • Stack (yığın): LIFO (Last In, First Out) prinsipinə əsaslanan elementlər kolleksiyası.
  • Queue (növbə): FIFO (First In, First Out) prinsipinə əsaslanan elementlər kolleksiyası.

1.3 Proqramlaşdırmada alqoritmlərin və məlumat strukturlarının önəmi

Vacibdir! Hətta sadə bir sayt və ya mobil tətbiq yazarkən belə, mürəkkəb alqoritmlər və məlumat strukturlarından istifadə edirsiniz. Tətbiq əməliyyat sistemi üzərində işləyir, sayt isə brauzer daxilində işləyir və bu şeylərin sürətli və etibarlı işləməsi üçün orada standartlaşdırılmış alqoritmlər və məlumat strukturlarından istifadə edilir.

Alqoritmlərin önəmi:

  • Proqramlaşdırmanın əsas prinsipi: Alqoritmlər istənilən proqramın təməlidir, məlumatların istənilən nəticəni əldə etmək üçün necə işlənəcəyini müəyyən edir.
  • Səmərəlilik və məhsuldarlıq: Optimal alqoritmlər proqramların daha sürətli işləməsini və resursların səmərəli istifadə edilməsini təmin edir.
  • Mürəkkəb problemlərin həlli: Alqoritmlər əl ilə həll etmək mümkün olmayan mürəkkəb hesablama məsələlərini həll etməyə imkan verir.
  • Universallıq: Bir çox alqoritmi fərqli sahələrdə, məsələn sıralama, axtarış, məlumatların sıxılması və kriptoqrafiyada tətbiq etmək olar.

Məlumat strukturlarının önəmi:

  • Məlumatların təşkil edilməsi: Məlumat strukturları məlumatları səmərəli təşkil etmək və idarə etmək üçün imkan yaradır ki, bu da effektiv proqramların yaradılması üçün vacibdir.
  • Alqoritmlərin dəstəklənməsi: Fərqli məlumat strukturları fərqli alqoritmlər üçün optimaldır və düzgün məlumat strukturu seçimi proqramın performansını əhəmiyyətli dərəcədə yaxşılaşdıra bilər.
  • Miqyaslanabilirlik: Yaxşı planlaşdırılmış məlumat strukturları proqramları asanlıqla genişləndirməyə və dəyişdirməyə imkan verir.

1.4 Sadə alqoritmlər nümunələri

Massivdə maksimumu tapmaq alqoritmi:

Bu alqoritm verilmiş rəqəmlər massivində ən böyük dəyəri tapır.

Addım-addım alqoritm:

  1. Massivin ilk elementini maksimum dəyər kimi qəbul edin.
  2. Massivin bütün digər elementlərini bir-bir yoxlayın:
  3. Əgər cari element cari maksimum dəyərdən böyükdürsə, maksimum dəyəri yeniləyin.
  4. Bütün elementlər yoxlandıqdan sonra tapılmış maksimum dəyəri qaytarın.

Python ilə həyata keçirilməsi:


def find_max(arr):
    # İlk elementin maksimum olduğunu qəbul edirik
    max_val = arr[0]
    # Massivin bütün elementlərini yoxlayırıq
    for num in arr:
        # Əgər cari element max_val-dan böyükdürsə, max_val-ı yeniləyirik
        if num > max_val:
            max_val = num
    # Tapılmış maksimum dəyəri qaytarırıq
    return max_val

# İstifadə nümunəsi:
# numbers = [4, 2, 9, 7, 5, 1]
# result = find_max(numbers)
# Çıxış: 9

Bubble Sort (Baloncuklu sıralama) alqoritmi:

Bu alqoritm massivdəki elementləri ardıcıl şəkildə müqayisə edərək və qonşu elementləri düzgün olmayan sırada olduqda yerlərini dəyişərək sıralayır.

Addım-addım alqoritm:

  1. Massivin ilk elementindən başlayın.
  2. Cari elementi növbəti elementlə müqayisə edin.
  3. Əgər cari element növbəti elementdən böyükdürsə, onların yerlərini dəyişin.
  4. Növbəti elementə keçin və 2-3-cü addımları təkrarlayın, massiv sonuna qədər gedin.
  5. Bir keçidlə heç bir dəyişiklik edilmədiyi müddətə qədər 1-4-cü addımları təkrarlayın.

Python ilə həyata keçirilməsi:


def bubble_sort(arr):
    n = len(arr)
    # Massivin bütün elementlərini yoxlayırıq
    for i in range(n):
        # Sonuncu i element artıq sıralanıb
        for j in range(0, n - i - 1):
            # Qonşu elementləri müqayisə edirik
            if arr[j] > arr[j + 1]:
                # Əgər düzgün sırada deyillərsə, yerlərini dəyişirik
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr

# İstifadə nümunəsi:
# numbers = [64, 34, 25, 12, 22, 11, 90]
# sorted_numbers = bubble_sort(numbers)
# Çıxış: [11, 12, 22, 25, 34, 64, 90]
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION