Je hebt intussen heel wat C# geleerd: variabelen, keuzes, lussen, functies en arrays. Daarmee kan je problemen oplossen. In dit hoofdstuk zetten we een stap terug en kijken we naar het plan achter een oplossing: het algoritme.
Als je programmeert, komen veel problemen steeds terug: een rij getallen sorteren, een waarde opzoeken in een lijst, het kleinste element vinden … Het is dan handig om over vaste recepten te beschikken die je telkens opnieuw kan gebruiken.
Een algoritme is een reeks geordende en logische instructies die worden gebruikt om een specifieke taak of probleem op te lossen. Het is dus een stapsgewijze procedure die je kan implementeren.
Je kan een algoritme zien als een recept: een vaste opeenvolging van stappen die, als je ze netjes volgt, altijd tot het gewenste resultaat leidt. Een goed recept hangt niet af van de specifieke gegevens. Een sorteeralgoritme sorteert zowel een rijtje namen als een rij rekeningnummers; je hoeft het recept maar één keer te bedenken.
Algoritmen spelen een centrale rol in de informatica: ze laten ons toe om efficiënte en gestructureerde oplossingen te vinden voor heel uiteenlopende taken. Eenzelfde probleem kan je vaak op meerdere manieren oplossen, en die manieren verschillen in hoe snel of hoe spaarzaam ze zijn. Daarom loont het om naast “werkt het?” ook te vragen “hoe lost het algoritme dit op, en is dat een verstandige manier?”.
Bepaalde manieren van aanpakken komen zo vaak terug dat ze een naam hebben gekregen. We noemen ze algoritmische technieken. In dit hoofdstuk leer je er twee kennen:
De rode draad door dit hoofdstuk is dus: hetzelfde probleem (sorteren, zoeken) kan je op een eenvoudige bruteforcemanier oplossen of op een slimmere verdeel-en-heersmanier, en dat maakt een groot verschil zodra de gegevens groot worden.