Program, funkcija, naravni jezik, psevdokoda in diagram poteka so različni načini za zapis istega algoritma, torej istega postopka za reševanje programerskega problema. Včasih pa lahko problem rešimo na več bistveno različnih načinov, torej z več različnimi smiselnimi algoritmi.
Problem MIN3 smo doslej reševali tako, da smo primerjali prvi dve števili, nato pa manjše od prvih dveh še s tretjim. Po dveh primerjavah smo natančno vedeli, katero število v podani trojici je najmanjše. Lahko pa se »pomikamo« od prvega števila do tretjega in v pomožni spremenljivki naj
hranimo doslej najmanjše število. Na ta način dobimo drugačen algoritem:
Kako lahko različne algoritme primerjamo med seboj? Algoritmi, ki ne dajejo pravilnih rezultatov ali pa se pri nekaterih vhodih ne ustavijo, nas običajno ne zanimajo. Pravilne in ustavljive algoritme pa lahko primerjamo po teh kriterijih:
Primerjajmo algoritma za problem MIN3. Kot bomo videli v naslednji učni enoti, lahko porabo časa ocenimo tako, da štejemo osnovne korake izvajanja algoritma; v našem primeru so to medsebojne primerjave dveh števil in prirejanja. Pri obeh algoritmih imamo pri poljubnem vhodu po dve primerjavi: pri prvem algoritmu najprej primerjamo prvo število z drugim, nato pa še manjše od obeh s tretjim, pri drugem algoritmu pa primerjamo najprej drugo, nato pa še tretje število s spremenljivko naj. Pri drugem algoritmu nekaj dodatnega časa vzamejo prirejanja, ki jih je lahko več kot pri prvem. Zaradi hitrosti današnjih računalnikov pa je ta razlika zanemarljiva. Glede porabe prostora sta oba algoritma enakovredna: poleg treh vhodnih spremenljivk uporabljata še spremenljivko naj
. Razumljivost je subjektiven kriterij, zato presojo o tem prepuščamo vam, našim bralkam in bralcem. Glede prilagodljivosti pa ima drugi algoritem prednost pred prvim. To boš spoznal(-a) pri reševanju naslednje naloge:
Razširi algoritma tako, da bosta reševala problem iskanja najmanjšega med podanimi štirimi števili. Algoritma zapiši kot pythonovi funkciji.