Algoritmu huwa sekwenza finita u definita tajjeb ta' passi li jitrasforma l-input fl-output mixtieq. Nivalutawha fuq żewg assi: korrezzjoni (dejjem jipprodwu r-risposta t-tajba?) u effiċjenza (kemm ta' ħin u memoria tuża?).
L-idea
Algoritmu validu għandu jkun mingħajr ambigwità (kull pass huwa ċar), finit (jintemm), u jipprodwi r-riżultat korrett għal kull input validu.
Eżempju
# Find the maximum value in a list
def find_max(nums):
if not nums:
return None # handle empty input
largest = nums[0] # assume first is the max
for n in nums[1:]: # scan the rest
if n > largest:
largest = n # update when we see something bigger
return largest
find_max([3, 9, 2, 7]) # -> 9
Dan jivvizita kull element darba.
Kumplessità
- Ħin: O(n) — passaġġ wieħed fuq n elementi.
- Spazju: O(1) — varjabbli żejjed wieħed biss.
Meta huwa importanti / ħabib
Istess problema, ħafna algoritmi bi kosti differenti. Dejjem iċċekkja l-każi tad-donn (input vojt, element wieħed, duplikati) — hemm fejn il-korrezzjoni normalment inqixxa.
Għaliex huwa importanti
L-algoritmi huma l-qalba tar-riżoluzzjoni tal-problemi fis-software.
Dwi programmi jistgħu jipprodwu l-istess risposta filwaqt li waħda hija elf darbiet aktar mgħaġġla.
Il-ħsieb f'termini ta' korrezzjoni u effiċjenza huwa dak li jiddistinggwi l-kodiċi li jaħdem fuq każ test mill-kodiċi li jaħdem fuq skala.
Hija wkoll il-lingwa mdixxuluta tal-intervisti tekniċi u diskussjonijiet tad-disinn tas-sistema.
