Belirli bir problemi çözmek için gerekli adımlar kümesi ya da formüle algoritma denir. Bunlar birbirini izleyen emirler dizisidir. Basit olmalıdır, mümkün olan en az adımda çözüme ulaşmalıdır.
Bir uygulamayı/programı tasarlarken, kullanılacak olan veri yapısı, uygulamada kullanmayı düşündüğümüz algoritma ya da algoritmaları seçmemizde etkendir. Bazen hali hazırda bilinen yöntemler yeterli olmazsa, kendimiz yeni formüller icat etmek zorunda kalırız.
Kabaca algoritmayı matematiksel olarak ifade etmek istesek:
$\bold{t}\ = f(N)$
Yani, t zamanında N tane eleman f fonksiyonundan geçer. t aslında algoritmanın gerçekleşmesi için geçen zamanı ifade eder. Bu süre bazen N bazen de verinin dağınıklığı ile orantılıdır.
Algoritma, mutlaka, problemin sonucunu bulmak için gereken adımları ve koşulları kesin olarak ortaya koymalıdır. Bu adımlar izlendiğinde sonuca kesin olarak ulaşılmalıdır. Aynı probleme çözüm olabilecek birden fazla algoritma bulunabilir. Hangi yöntemin doğru olduğu kararı uygulamayı geliştiren kişiye ve geliştirilen uygulamaya bağlıdır.
İçinde milyonlarca kaydın olduğu bir veritabanında arama yapan bir uygulama, duruma göre milyonlarca sorgu yapan bir algoritma kullanabileceği gibi, sadece 10 sorgu yaparak da çözüme giden bir algoritma kullanabilir.