Alqoritm məsələni həll edən dəqiq addımlar ardıcıllığıdır. Bu mövzu bütün kursun əsasını qoyur: alqoritmin nə olduğunu, hansı xassələrə malik olduğunu və eyni məsələnin niyə bir neçə alqoritmlə həll oluna biləcəyini görürük.

Alqoritm nədir

Alqoritm giriş verilənlərini nəticəyə çevirən sonlu və dəqiq təsvir olunmuş addımlar ardıcıllığıdır. Kim yerinə yetirirsə-yetirsin, eyni girişdə eyni nəticə alınmalıdır. Yemək resepti, metroda marşrut, axtarış və çeşidləmə eyni anlayışın müxtəlif nümunələridir.

Eyni məsələ üçün iki alqoritm
Eyni məsələ üçün iki alqoritm

Dörd xassə

XassəMənası
Sonluluqməhdud sayda addımdan sonra dayanır
Müəyyənlikhər addım birmənalı yazılıb
Giriş və çıxışsıfır və ya bir neçə giriş, ən azı bir nəticə
Effektivlikhər addım əldə yerinə yetirilə biləcək qədər sadədir

💡 Çox vaxt beşinci xassə kimi düzgünlük də əlavə olunur: nəticə məsələnin şərtini ödəməlidir. Buna 3-cü mövzuda qayıdacağıq.

Aşağıdakı kod alqoritmdir: giriş siyahı və target, çıxış indeks və ya -1, dövr siyahının sonunda bitir.

python
def find_index(items, target):
    for i, x in enumerate(items):
        if x == target:
            return i
    return -1


print(find_index([4, 8, 15, 16], 15))
print(find_index([4, 8, 15, 16], 23))
text
2
-1

Məsələ və həll

Məsələ nəyi əldə etmək lazım olduğunu bildirir (giriş və gözlənilən çıxış). Alqoritm bunu necə etməyi deyir. Bir məsələnin çox sayda həlli ola bilər. Onları üç sualla müqayisə edirik: düzgündürmü, nə qədər sürətlidir, nə qədər yaddaş tələb edir.

Misal: 1-dən n-ə qədər cəm

Birinci alqoritm ədədləri ardıcıl toplayır, n addım edir:

python
def sum_loop(n):
    total = 0
    for i in range(1, n + 1):
        total += i
    return total


print(sum_loop(100))
text
5050

İkinci alqoritm Qauss düsturundan istifadə edir: 1 + 2 + ... + n = n(n + 1) / 2. Bu, sabit sayda əməliyyatdır:

python
def sum_loop(n):
    total = 0
    for i in range(1, n + 1):
        total += i
    return total


def sum_formula(n):
    return n * (n + 1) // 2


print(sum_formula(100))
print(sum_loop(100) == sum_formula(100))
text
5050
True

Nəticələr eynidir, lakin addımların sayı fərqlidir:

python
def loop_steps(n):
    steps = 0
    for _ in range(1, n + 1):
        steps += 1
    return steps


for n in (10, 100, 1000):
    print(n, loop_steps(n), 3)
text
10 10 3
100 100 3
1000 1000 3

Üçüncü sütun düsturun əməliyyat sayıdır (təxminən 3): n böyüdükcə dəyişmir.

Niyə alqoritmləri öyrənirik

  • Düzgün alqoritm proqramı saatlardan saniyələrə endirə bilər.
  • sorted, dict, set kimi daxili vasitələr alqoritmlərdir; onların qiymətini bilmək faydalıdır.
  • Alqoritmik düşüncə müsahibələrdə və real layihələrdə lazımdır.

Kursun yolu

Hər məsələdə eyni qaydaya əməl edirik: məsələni dəqiq yazmaq, ideyanı pseudokodla təsvir etmək, Python-da kod yazmaq, test və sərhəd halları ilə yoxlamaq, sonra sürəti ölçmək və mürəkkəbliyi qiymətləndirmək. Sonrakı mövzularda bu yolla axtarış, çeşidləmə, verilənlər strukturları və qrafiklərə keçəcəyik.

⚠️ Alqoritmi koddan ayırın: eyni alqoritm Python-da da, başqa dildə də yazıla bilər. Kod yalnız onun bir yazılışıdır.