Kas yra algoritmas | Algoritmų įvadas

Kas yra algoritmas | Algoritmų įvadas

Algoritmo apibrėžimas

Žodis Algoritmas reiškia Baigtinių taisyklių arba instrukcijų rinkinys, kurių reikia laikytis atliekant skaičiavimus ar kitas problemų sprendimo operacijas
Arba
Matematinės problemos sprendimo procedūra baigtiniu žingsnių skaičiumi, kuri dažnai apima rekursines operacijas .

Todėl algoritmas reiškia baigtinių žingsnių seką tam tikrai problemai išspręsti.

Kas yra Algoritmas

Algoritmų naudojimas:

Algoritmai atlieka lemiamą vaidmenį įvairiose srityse ir turi daug pritaikymų. Kai kurios pagrindinės sritys, kuriose naudojami algoritmai, yra šios:

  1. Kompiuteriai: Algoritmai sudaro kompiuterių programavimo pagrindą ir yra naudojami sprendžiant problemas, pradedant nuo paprasto rūšiavimo ir paieškos iki sudėtingų užduočių, tokių kaip dirbtinis intelektas ir mašininis mokymasis.
  2. Matematika: Algoritmai naudojami matematinėms problemoms spręsti, pavyzdžiui, ieškant optimalaus tiesinių lygčių sistemos sprendimo arba surandant trumpiausią kelią grafike.
  3. Operacijų tyrimas : Algoritmai naudojami optimizuoti ir priimti sprendimus tokiose srityse kaip transportavimas, logistika ir išteklių paskirstymas.
  4. Dirbtinis intelektas: Algoritmai yra dirbtinio intelekto ir mašininio mokymosi pagrindas ir naudojami kuriant intelektualias sistemas, galinčias atlikti tokias užduotis kaip vaizdo atpažinimas, natūralios kalbos apdorojimas ir sprendimų priėmimas.
  5. Duomenų mokslas: Algoritmai naudojami analizuoti, apdoroti ir išgauti įžvalgas iš didelio duomenų kiekio tokiose srityse kaip rinkodara, finansai ir sveikatos priežiūra.

Tai tik keli daugybės algoritmų taikymo pavyzdžiai. Atsirandant naujoms technologijoms ir sritims, algoritmų naudojimas nuolat plečiasi, todėl jie tampa gyvybiškai svarbiu šiuolaikinės visuomenės komponentu.

Algoritmai gali būti paprasti ir sudėtingi, atsižvelgiant į tai, ko norite pasiekti.

Tai galima suprasti paėmus naujo recepto gaminimo pavyzdį. Norint gaminti naują receptą, reikia perskaityti instrukcijas ir veiksmus ir juos atlikti po vieną, nurodyta seka. Taip gaunamas rezultatas – naujas patiekalas iškepa puikiai. Kiekvieną kartą, kai naudojate telefoną, kompiuterį, nešiojamąjį kompiuterį ar skaičiuotuvą, naudojate algoritmus. Panašiai algoritmai padeda atlikti užduotį programuojant, kad gautų laukiamą išvestį.

Sukurtas algoritmas yra nepriklausomas nuo kalbos, ty tai yra tik paprastos instrukcijos, kurias galima įgyvendinti bet kuria kalba, tačiau išvestis bus tokia pati, kaip ir tikėtasi.

Kam reikalingi algoritmai?

  1. Algoritmai yra būtini norint efektyviai ir efektyviai išspręsti sudėtingas problemas.
  2. Jie padeda automatizuoti procesus ir padaryti juos patikimesnius, greitesnius ir lengviau atliekamus.
  3. Algoritmai taip pat leidžia kompiuteriams atlikti užduotis, kurias žmonėms būtų sunku arba neįmanoma atlikti rankiniu būdu.
  4. Jie naudojami įvairiose srityse, tokiose kaip matematika, informatika, inžinerija, finansai ir daugelyje kitų, siekiant optimizuoti procesus, analizuoti duomenis, daryti prognozes ir pateikti problemų sprendimus.

Kokios yra algoritmo charakteristikos?

Algoritmo charakteristikos

Kaip pagal receptą būtų laikomasi ne rašytinių nurodymų, o tik standartinio. Panašiai ne visos rašytinės programavimo instrukcijos yra algoritmai. Kad kai kurios instrukcijos būtų algoritmas, jos turi turėti šias charakteristikas:

  • Aiškus ir nedviprasmiškas : Algoritmas turi būti nedviprasmiškas. Kiekvienas jo žingsnis turi būti aiškus visais aspektais ir turi vesti tik vieną prasmę.
  • Gerai apibrėžti įėjimai : Jei algoritmas nurodo priimti įvestis, tai turėtų būti tiksliai apibrėžtos įvesties. Tai gali priimti arba nepriimti įvesties.
  • Gerai apibrėžti išėjimai: Algoritmas turi aiškiai apibrėžti, kokia produkcija bus gauta, ir ji taip pat turi būti gerai apibrėžta. Jis turėtų pagaminti bent 1 išvestį.
  • Baigtumas: Algoritmas turi būti baigtinis, t.y. jis turi baigtis po riboto laiko.
  • Įmanoma: Algoritmas turi būti paprastas, bendras ir praktiškas, kad jį būtų galima vykdyti naudojant turimus išteklius. Jame neturi būti ateities technologijų ar nieko.
  • Nepriklausoma nuo kalbos: Sukurtas algoritmas turi būti nepriklausomas nuo kalbos, t. y. tai turi būti paprastos instrukcijos, kurios gali būti įgyvendintos bet kuria kalba, tačiau išvestis bus tokia pati, kaip ir tikėtasi.
  • Įvestis : Algoritmas turi nulį arba daugiau įvesčių. Kiekvienas, kuriame yra pagrindinis operatorius, turi priimti nulį ar daugiau įvesties.
  • Išvestis : Algoritmas sukuria bent vieną išvestį. Kiekviena komanda, kurioje yra pagrindinis operatorius, turi priimti nulį ar daugiau įvesties.
  • Apibrėžtumas: Visos algoritmo instrukcijos turi būti nedviprasmiškos, tikslios ir lengvai interpretuojamos. Remdamiesi bet kuria algoritmo instrukcija, galite aiškiai suprasti, ką reikia padaryti. Kiekvienas pagrindinis komandos operatorius turi būti apibrėžtas be jokių dviprasmybių.
  • Baigtumas: Algoritmas turi baigtis po baigtinio žingsnių skaičiaus visais bandymo atvejais. Kiekviena komanda, kurioje yra pagrindinis operatorius, turi būti nutraukta per ribotą laiką. Begalinės kilpos arba rekursinės funkcijos be bazinių sąlygų neturi baigtinumo.
  • Efektyvumas: Algoritmas turi būti sukurtas naudojant labai paprastas, paprastas ir įmanomas operacijas, kad būtų galima jį atsekti naudojant tik popierių ir pieštuką.

Algoritmo savybės:

  • Jis turėtų baigtis po riboto laiko.
  • Jis turėtų sukurti bent vieną išvestį.
  • Tai turėtų užimti nulį arba daugiau įvesties.
  • Tai turėtų būti deterministinė priemonė, suteikianti tą pačią išvestį tuo pačiu įvesties atveju.
  • Kiekvienas algoritmo žingsnis turi būti efektyvus, t. y. kiekvienas veiksmas turi atlikti tam tikrą darbą.

Algoritmų tipai:

Galimi keli algoritmų tipai. Kai kurie svarbūs algoritmai yra šie:

1. Brute Force algoritmas :

Tai paprasčiausias būdas išspręsti problemą. Brutalios jėgos algoritmas yra pirmasis būdas rasti, kai matome problemą.

2. Rekursyvinis algoritmas :

Rekursyvinis algoritmas yra pagrįstas rekursija . Šiuo atveju problema suskaidoma į kelias dalis ir vėl ir vėl vadinama ta pačia funkcija.

3. Atgalinis algoritmas :

Atbulinės eigos algoritmas sukuria sprendimą ieškodamas visų galimų sprendimų. Naudodamiesi šiuo algoritmu, mes ir toliau kuriame sprendimą pagal kriterijus. Kai sprendimas nepavyksta, atsekame iki gedimo taško, remdamiesi kitu sprendimu ir tęsiame šį procesą, kol rasime sprendimą arba bus pasirūpinta visais galimais sprendimais.

4. Paieškos algoritmas :

Paieškos algoritmai yra tie, kurie naudojami ieškant elementų arba elementų grupių iš tam tikros duomenų struktūros. Jie gali būti skirtingų tipų, atsižvelgiant į jų požiūrį arba duomenų struktūrą, kurioje elementas turėtų būti rastas.

5. Rūšiavimo algoritmas :

Rūšiavimas – tai duomenų grupės išdėstymas tam tikru būdu pagal reikalavimą. Algoritmai, padedantys atlikti šią funkciją, vadinami rūšiavimo algoritmais. Paprastai rūšiavimo algoritmai naudojami rūšiuoti duomenų grupes didėjančiu arba mažėjančiu būdu.

6. Maišos algoritmas :

Maišos algoritmai veikia panašiai kaip paieškos algoritmas. Tačiau juose yra indeksas su rakto ID. Atliekant maišą, konkretiems duomenims priskiriamas raktas.

7. Skaldyk ir užkariauk algoritmas :

Šis algoritmas suskaido problemą į poproblemas, išsprendžia vieną poproblemą ir sujungia sprendimus, kad gautų galutinį sprendimą. Jį sudaro šie trys žingsniai:

  • Padalinti
  • Išspręsti
  • Sujungti

8. Godus algoritmas :

Šio tipo algoritme sprendimas kuriamas dalis po dalies. Kitos dalies sprendimas sukurtas remiantis tiesiogine kitos dalies nauda. Daugiausia naudos duodantis sprendimas bus pasirinktas kaip kitos dalies sprendimas.

9. Dinaminio programavimo algoritmas :

Šis algoritmas naudoja jau rasto sprendimo naudojimo koncepciją, kad būtų išvengta pasikartojančio tos pačios problemos dalies skaičiavimo. Jis padalija problemą į mažesnes persidengiančias subproblemas ir jas išsprendžia.

10. Atsitiktinis algoritmas :

Atsitiktinės atrankos algoritme naudojame atsitiktinį skaičių, todėl jis duoda tiesioginės naudos. Atsitiktinis skaičius padeda nustatyti laukiamą rezultatą.

Norėdami sužinoti daugiau apie algoritmų tipus, skaitykite straipsnį apie Algoritmų tipai .

Algoritmų pranašumai:

  • Tai lengva suprasti.
  • Algoritmas yra laipsniškas tam tikros problemos sprendimo vaizdavimas.
  • Algoritme problema suskaidoma į mažesnes dalis arba žingsnius, todėl programuotojui lengviau ją konvertuoti į tikrą programą.

Algoritmų trūkumai :

  • Algoritmo rašymas užtrunka ilgai, todėl tai užima daug laiko.
  • Suprasti sudėtingą logiką naudojant algoritmus gali būti labai sunku.
  • Algoritmuose sunku parodyti išsišakojimą ir ciklą (imp) .

Kaip sukurti algoritmą?

Norint parašyti algoritmą, būtina atlikti šiuos dalykus:

  1. The problema tai turi būti išspręsta naudojant šį algoritmą, ty aiškų problemos apibrėžimą.
  2. The suvaržymus sprendžiant problemą reikia atsižvelgti į problemą.
  3. The įvestis būti imtasi problemai išspręsti.
  4. The išvestis reikia tikėtis, kai problema bus išspręsta.
  5. The sprendimas ši problema yra nustatytų apribojimų ribose.

Tada algoritmas parašomas naudojant aukščiau nurodytus parametrus taip, kad jis išspręstų problemą.

Pavyzdys: Apsvarstykite pavyzdį, kaip pridėti tris skaičius ir atspausdinti sumą.

1 veiksmas: išankstinių sąlygų įvykdymas

Kaip aptarta aukščiau, norint parašyti algoritmą, turi būti įvykdytos jo sąlygos.

  1. Problema, kurią reikia išspręsti naudojant šį algoritmą : pridėkite 3 skaičius ir atspausdinkite jų sumą.
  2. Problemos apribojimai, į kuriuos reikia atsižvelgti sprendžiant problemą : Skaičius turi sudaryti tik skaitmenys ir jokių kitų simbolių.
  3. Įvestis, kurią reikia atlikti norint išspręsti problemą: Trys skaičiai, kuriuos reikia pridėti.
  4. Rezultatas, kurio tikimasi išsprendus problemą: Trijų skaičių, paimtų kaip įvestis, suma, t. y. vieno sveikojo skaičiaus reikšmė.
  5. Šios problemos sprendimas, atsižvelgiant į nurodytus apribojimus: Sprendimas susideda iš 3 skaičių pridėjimo. Tai galima padaryti naudojant „+“ operatorių, bitais arba bet kokiu kitu metodu.


2 veiksmas: algoritmo kūrimas

Dabar sukurkime algoritmą naudodamiesi aukščiau pateiktomis išankstinėmis sąlygomis:

Algoritmas pridėti 3 skaičius ir atspausdinti jų sumą:

  1. PRADĖTI
  2. Paskelbkite 3 sveikųjų skaičių kintamuosius num1, num2 ir num3.
  3. Paimkite tris skaičius, kuriuos reikia pridėti, kaip įvestis atitinkamai kintamiesiems num1, num2 ir num3.
  4. Paskelbkite sveikojo skaičiaus kintamąją sumą, kad išsaugotumėte gautą 3 skaičių sumą.
  5. Sudėkite 3 skaičius ir išsaugokite rezultatą kintamojoje sumoje.
  6. Išspausdinkite kintamosios sumos reikšmę
  7. GALAS


3 veiksmas: algoritmo patikrinimas jį įgyvendinant.

Norėdami išbandyti algoritmą, įgyvendinkime jį C kalba.

Programa:

C++ // C++ program to add three numbers // with the help of above designed // algorithm #include using namespace std; int main() { // Variables to take the input of // the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input cout < < 'Enter the 1st number: '; cin>> skaičius1; cout < < ' ' < < num1 < < endl; cout < < 'Enter the 2nd number: '; cin>> skaičius2; cout < < ' ' < < num2 < < endl; cout < < 'Enter the 3rd number: '; cin>> skaičius3; cout < < ' ' < < num3; // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum cout < < ' Sum of the 3 numbers is: ' < < sum; return 0; } // This code is contributed by shivanisinghss2110> C // C program to add three numbers // with the help of above designed algorithm #include int main() { // Variables to take the input of the 3 numbers int num1, num2, num3; // Variable to store the resultant sum int sum; // Take the 3 numbers as input printf('Enter the 1st number: '); scanf('%d', &num1); printf('%d ', num1); printf('Enter the 2nd number: '); scanf('%d', &num2); printf('%d ', num2); printf('Enter the 3rd number: '); scanf('%d', &num3); printf('%d ', num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum printf(' Sum of the 3 numbers is: %d', sum); return 0; }> Java // Java program to add the three numbers // with the help of above designed // algorithm import java.util.*; class GFG { public static void main(String[] args) { // Variable to store the resultant sum int sum = 0; // Declare the object and initialize with // predefined standard input object Scanner sc = new Scanner(System.in); // Scanner definition // Variables to take the input of // the 3 numbers System.out.println('Enter the 1st number: '); int num1 = sc.nextInt(); // input is an Integer // read by nextInt() function System.out.println(' ' + num1); System.out.println('Enter the 2nd number: '); int num2 = sc.nextInt(); System.out.println(' ' + num2); System.out.println('Enter the 3rd number: '); int num3 = sc.nextInt(); System.out.println(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; System.out.println('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Rishab Dugar*/> Python # Python3 program to add three numbers # with the help of above designed # algorithm if __name__ == '__main__': # Variables to take the input of # the 3 numbers num1 = num2 = num3 = 0 # Variable to store the resultant sum sum = 0 # Take the 3 numbers as input num1 = int(input('Enter the 1st number: ')) num2 = int(input('Enter the 2nd number: ')) num3 = int(input('Enter the 3rd number: ')) # Calculate the sum using + operator # and store it in variable sum sum = num1 + num2 + num3 # Print the sum print(' Sum of the 3 numbers is:', sum)> C# // C# program to add the three numbers // with the help of above designed // algorithm using System; class GFG { static public void Main () { // Variable to store the resultant sum int sum = 0; // Variables to take the input of // the 3 numbers Console.Write('Enter the 1st number: '); int num1 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num1); Console.Write('Enter the 2nd number: '); int num2 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num2); Console.Write('Enter the 3rd number: '); int num3 = int.Parse(Console.ReadLine()); Console.WriteLine(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; Console.WriteLine('Sum of the 3 numbers is = ' + sum); } } /*This code is contributed by Pushpesh Raj*/> Javascript // Javascript program to add three numbers // with the help of above designed // algorithm // Variables to take the input of // the 3 numbers let num1 = 0, num2 = 0, num3 = 0; // Variable to store the resultant sum let sum = 0; // Take the 3 numbers as input console.log('Enter the 1st number: '); num1 = parseInt(prompt()); console.log(' ' + num1 + ' '); console.log('Enter the 2nd number: '); num2=parseInt(prompt()); console.log(' ' + num2 + ' '); console.log('Enter the 3rd number: '); num3=parseInt(prompt()); console.log(' ' + num3); // Calculate the sum using + operator // and store it in variable sum sum = num1 + num2 + num3; // Print the sum console.log(' Sum of the 3 numbers is: ' + sum); // This code is contributed by Aman Kumar>
Išvestis

Įveskite 1-ąjį skaičių: 0 Įveskite 2-ąjį skaičių: 0 Įveskite 3-ią skaičių: -1577141152 3 skaičių suma yra: -1577141152

Štai žingsnis po žingsnio kodo algoritmas:

  1. Paskelbkite tris kintamuosius num1, num2 ir num3, kad išsaugotumėte tris pridėtinus skaičius.
  2. Deklaruokite kintamąją sumą, kad išsaugotumėte trijų skaičių sumą.
  3. Naudokite teiginį cout, kad paragintumėte vartotoją įvesti pirmąjį skaičių.
  4. Naudokite cin teiginį, kad perskaitytumėte pirmąjį skaičių ir išsaugotumėte jį num1.
  5. Naudokite teiginį cout, kad paragintumėte vartotoją įvesti antrąjį skaičių.
  6. Naudokite cin teiginį, kad perskaitytumėte antrąjį skaičių ir išsaugotumėte jį num2.
  7. Naudokite teiginį cout, kad paragintumėte vartotoją įvesti trečiąjį skaičių.
  8. Naudokite cin teiginį, kad perskaitytumėte ir išsaugotumėte trečiąjį skaičių 3.
  9. Apskaičiuokite trijų skaičių sumą naudodami + operatorių ir išsaugokite ją sumos kintamajame.
  10. Norėdami atspausdinti trijų skaičių sumą, naudokite teiginį cout.
  11. Pagrindinė funkcija grąžina 0, o tai rodo sėkmingą programos vykdymą.

Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(1)

Viena problema, daug sprendimų: Algoritmo sprendimas gali būti arba negali būti daugiau nei vienas. Tai reiškia, kad įgyvendinant algoritmą gali būti daugiau nei vienas būdas jį įgyvendinti. Pavyzdžiui, aukščiau pateiktoje 3 skaičių pridėjimo užduotyje sumą galima apskaičiuoti įvairiais būdais:

  • + operatorius
  • Bitiniai operatoriai
  • . . ir tt

Kaip analizuoti algoritmą?

Kad standartinis algoritmas būtų geras, jis turi būti efektyvus. Todėl algoritmo efektyvumas turi būti patikrintas ir palaikomas. Tai gali būti dviem etapais:

1. Išankstinė analizė:

Priori reiškia anksčiau. Taigi „Priori“ analizė reiškia algoritmo patikrinimą prieš jį įgyvendinant. Čia algoritmas tikrinamas, kai jis parašytas teorinių žingsnių forma. Šis algoritmo efektyvumas matuojamas darant prielaidą, kad visi kiti veiksniai, pavyzdžiui, procesoriaus greitis, yra pastovūs ir neturi jokios įtakos įgyvendinimui. Paprastai tai atlieka algoritmo kūrėjas. Ši analizė nepriklauso nuo aparatinės įrangos tipo ir kompiliatoriaus kalbos. Jame pateikiami apytiksliai atsakymai į programos sudėtingumą.

2. Užpakalinė analizė:

Užpakalinis reiškia po. Taigi užpakalinė analizė reiškia algoritmo patikrinimą po jo įgyvendinimo. Čia algoritmas tikrinamas jį įdiegiant bet kuria programavimo kalba ir jį vykdant. Ši analizė padeda gauti tikrosios ir tikrosios analizės ataskaitas apie teisingumą (kiekvienai galimai įvesties (-ių), jei ji rodo / grąžina teisingą išvestį), reikalingą erdvę, sunaudotą laiką ir tt Tai yra, tai priklauso nuo kompiliatorius ir naudojamos aparatinės įrangos tipas.

Kas yra algoritmo sudėtingumas ir kaip jį rasti?

Algoritmas apibrėžiamas kaip sudėtingas, pagrįstas sunaudojamos erdvės ir laiko kiekiu. Taigi algoritmo sudėtingumas reiškia laiko, kurio jam reikės vykdyti ir gauti laukiamą išvestį, matą, ir erdvę, kurios jam reikės visiems duomenims (įvesties, laikiniems duomenims ir išvestims) saugoti. Taigi šie du veiksniai apibrėžia algoritmo efektyvumą.
Du algoritmo sudėtingumo veiksniai yra šie:

  • Laiko faktorius : laikas matuojamas skaičiuojant pagrindinių operacijų, pvz., palyginimų, skaičių rūšiavimo algoritme.
  • Kosmoso faktorius : Vieta matuojama skaičiuojant maksimalią atminties vietą, reikalingą algoritmui paleisti/vykdyti.

Todėl Algoritmo sudėtingumą galima suskirstyti į du tipus :

1. Erdvės sudėtingumas : Algoritmo erdvės sudėtingumas reiškia atminties kiekį, kurio algoritmui reikia kintamiesiems saugoti ir rezultatui gauti. Tai gali būti įvestis, laikinos operacijos arba išėjimai.

Kaip apskaičiuoti erdvės sudėtingumą?
Algoritmo erdvės sudėtingumas apskaičiuojamas nustatant šiuos 2 komponentus:

  • Pataisyta dalis: Tai reiškia erdvę, kurios reikia algoritmui. Pavyzdžiui, įvesties kintamieji, išvesties kintamieji, programos dydis ir kt.
  • Kintamoji dalis: Tai reiškia erdvę, kuri gali skirtis atsižvelgiant į algoritmo įgyvendinimą. Pavyzdžiui, laikinieji kintamieji, dinaminis atminties paskirstymas, rekursijos kamino erdvė ir kt.
    Todėl erdvės sudėtingumas S(P) bet kurio algoritmo P yra S(P) = C + SP(I) , kur C yra fiksuotoji dalis, o S(I) yra kintamoji algoritmo dalis, kuri priklauso nuo egzemplioriaus charakteristikos I.

Pavyzdys: Apsvarstykite toliau pateiktą linijinės paieškos algoritmą

1 veiksmas: PRADĖKITE
2 veiksmas: gaukite n masyvo elementų arr ir skaičių, kurio reikia ieškoti x
3 veiksmas: pradėkite nuo kairiojo arr[] elemento ir po vieną palyginkite x su kiekvienu arr[] elementu
4 veiksmas: jei x sutampa su elementu, spausdinkite True.
5 veiksmas: jei x nesutampa su jokiu elementu, Spausdinkite klaidingą.
6 veiksmas: PABAIGA
Čia yra 2 kintamieji arr[] ir x, kur arr[] yra kintamoji n elementų dalis, o x yra fiksuota dalis. Vadinasi, S(P) = 1+n. Taigi erdvės sudėtingumas priklauso nuo n (elementų skaičiaus). Dabar erdvė priklauso nuo nurodytų kintamųjų ir konstantų tipų duomenų tipų ir bus atitinkamai padauginta.

2. Laiko sudėtingumas : Algoritmo sudėtingumas laiko atžvilgiu reiškia laiką, kurio reikia algoritmui vykdyti ir rezultatui gauti. Tai gali būti įprastoms operacijoms, sąlyginiams if-else sakiniams, ciklo sakiniams ir kt.

Kaip apskaičiuoti , Laiko sudėtingumas?
Algoritmo sudėtingumas laikui bėgant taip pat apskaičiuojamas nustatant šiuos 2 komponentus:

  • Pastovaus laiko dalis: Bet kuri instrukcija, kuri vykdoma tik vieną kartą, patenka į šią dalį. Pavyzdžiui, įvestis, išvestis, jei-else, jungiklis, aritmetinės operacijos ir kt.
  • Kintamo laiko dalis: Bet kuri instrukcija, kuri vykdoma daugiau nei vieną kartą, tarkime, n kartų, yra šioje dalyje. Pavyzdžiui, kilpos, rekursija ir kt.
    Todėl laiko sudėtingumas T(P) bet kurio algoritmo P yra T(P) = C + TP(I) , kur C yra pastovi laiko dalis, o TP(I) yra kintamoji algoritmo dalis, kuri priklauso nuo egzemplioriaus charakteristikos I.

Pavyzdys: Taikant aukščiau pateiktą linijinės paieškos algoritmą, laiko sudėtingumas apskaičiuojamas taip:

1 veiksmas: – pastovus laikas
2 veiksmas: – kintamas laikas (reikia n įvesties)
3 veiksmas: – Kintamasis laikas (iki masyvo ilgio (n) arba rasto elemento indekso)
4 veiksmas: – pastovus laikas
5 veiksmas: – pastovus laikas
6 veiksmas: – pastovus laikas
Vadinasi, T(P) = 1 + n + n(1 + 1) + 1 = 2 + 3n, kurį galima sakyti kaip T(n).

Kaip išreikšti algoritmą?

  1. Natūrali kalba: - Čia mes išreiškiame algoritmą natūralia anglų kalba. Iš jo per sunku suprasti algoritmą.
  2. Struktūrinė schema :- Čia išreiškiame algoritmą padarydami a grafinis/vaizdinis jo pavaizdavimas. Ją lengviau suprasti nei natūralią kalbą.
  3. Pseudo kodas :- Čia mes išreiškiame algoritmą anotacijų ir informatyvaus teksto forma, parašytas paprasta anglų kalba, kuris yra labai panašus į tikrąjį kodą, tačiau neturi sintaksės kaip bet kuri kita programavimo kalba, todėl kompiuteris jo negali sudaryti ar interpretuoti. . Tai geriausias būdas išreikšti algoritmą, nes jį gali suprasti net pasaulietis, turintis tam tikrų mokyklinio lygio žinių.