Dowód poprawności algorytmu – rozumowanie matematyczne prowadzące do formalnego wykazania, że dany algorytm przy poprawnych danych wejściowych da nam wynik spełniający wymagania, np. że algorytm quicksort po podaniu mu niepustej tablicy elementów porównywalnych na wyjściu da nam tablicę zawierającą te same elementy, ale uporządkowane w kolejności od najmniejszego do największego.

Dowód poprawności algorytmu zawsze składa się z dwóch części: dowód, że jeśli algorytm się zakończy, to da poprawny wynik, dowód, że przy poprawnych danych wejściowych algorytm zawsze się zakończy.

Do dowodzenia poprawności algorytmów wykorzystywane są zazwyczaj pewne formalizmy matematyczne wiążące ze sobą warunek wstępny, kod oraz warunek końcowy. Większość tych formalizmów opiera się na logice Hoare’a.

W ogólnym przypadku pytanie, czy dany algorytm jest poprawny jest nierozstrzygalne, dla większości języków opisu algorytmów nierozstrzygalne są nawet pytania: czy dane dwa algorytmy dają taki sam wynik, czy dany algorytm dla poprawnych danych wejściowych się kończy (nawet przy założeniu, że zawsze jesteśmy w stanie zweryfikować poprawność danych wejściowych).

Są jednak takie języki, w których np. da się udzielić odpowiedzi na drugie pytanie. Do takich języków należą np.