Inom datavetenskap är en algoritm en ändlig sekvens av väl definierade, datorimplementerbara instruktioner, vanligtvis för att lösa en klass av problem eller för att utföra en beräkning. Det är en steg-för-steg-procedur som tar lite input (data), bearbetar det och producerar en utgång (resultat).
En formell definition betonar flera viktiga egenskaper:
* finitet: Algoritmen måste avslutas efter ett begränsat antal steg. Det kan inte springa för alltid.
* Definitess: Varje steg måste definieras exakt; Åtgärderna som ska genomföras måste vara strikt och otvetydigt specificerade för varje fall. Det bör inte finnas något utrymme för tolkning.
* Input: En algoritm har noll eller fler ingångar (mängder som ges till den initialt innan algoritmen börjar).
* Utgång: En algoritm har en eller flera utgångar (mängder som har en specificerad relation till ingångarna).
* Effektivitet: Varje steg måste vara genomförbart, vilket innebär att det måste vara något som kan göras exakt och på en begränsad tid. Verksamheten måste vara tillräckligt grundläggande för att de i princip kan genomföras exakt och på en begränsad tid.
I huvudsak är en algoritm ett recept eller en uppsättning instruktioner för att lösa ett specifikt problem. Det är inte bara ett program (även om det kan implementeras som ett program på ett programmeringsspråk) utan snarare det underliggande logiska förfarandet som programmet förkroppsligar. Samma algoritm kan implementeras på många olika programmeringsspråk.
Till exempel är ett recept för att baka en kaka analog med en algoritm. Den specificerar ingredienserna (ingången), stegen (instruktioner) och slutprodukten (utgång). En sorteringsalgoritm, som bubbelsorter eller sammanslagningssortering, är en exakt uppsättning steg för att ordna en lista över objekt i en specifik ordning.