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.
Dörd xassə
| Xassə | Mənası |
|---|---|
| Sonluluq | məhdud sayda addımdan sonra dayanır |
| Müəyyənlik | hər addım birmənalı yazılıb |
| Giriş və çıxış | sıfır və ya bir neçə giriş, ən azı bir nəticə |
| Effektivlik | hə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.
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))2
-1Mə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:
def sum_loop(n):
total = 0
for i in range(1, n + 1):
total += i
return total
print(sum_loop(100))5050İkinci alqoritm Qauss düsturundan istifadə edir: 1 + 2 + ... + n = n(n + 1) / 2. Bu, sabit sayda əməliyyatdır:
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))5050
TrueNəticələr eynidir, lakin addımların sayı fərqlidir:
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)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,setkimi 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.