1.6 Program Çalışma Hızı ve Bellek Gereksinimi

Programın çalışma hızı karmaşıklıkla ifade edilir; bu kavram zaman birimiyle ifade edilmeyip doğrudan işlem adedi veya döngü sayısıyla ifade edilir. Çünkü, programın çalışma hızında zaman miktarı programın üzerinde koştuğu donanıma çok bağlıdır; dolayısıyla algoritmaları birbiriyle karşılaştırmak için zaman miktarını kullanmak gerçekçi olmayıp yanılgılara neden olmaktadır. Bunun yerine, ilgili algoritmanın bilgisayar donanımından bağımsız olarak kaç adet işlem veya döngüyle gerçekleştirilebileceği hesaplanır. Algoritma karmaşıklığı iki açıdan ele alınır. Biri zaman karmaşıklığı, diğeri alan (veya bellek) karmaşıklığıdır. Zaman karmaşıklığı (time complexity) algoritmanın sonuca ulaşması için gerekli zaman hakkında bilgi verir. Alan karmaşıklığı (space complexity) ise algoritmanın ihtiyaç duyacağı bellek miktarı hakkında bilgi verir.

Algoritma karmaşıklığı iki şekilde ifade edilebilir. Biri doğrudan parametrelere bağlı olarak tam matematiksel ifadeyle; ikincisiyse, parametrelerin karmaşıklığı nasıl etkilediğini mertebe şeklinde gösterir; Mertebesi göstermek için O (büyük o), gibi birçok asimtotik notasyon kullanılır; genel olarak O notasyonunu kullanmak yaygındır. Örneğin iki matrisin çarpılması için gerekli zaman karmaşıklığı olarak hesaplanmışsa bu algoritma zaman karmaşıklığı ’den daha iyidir.

Bir program iki açıdan belleğe ihtiyaç duyar; biri kodun tutulması diğeri de kodun çalışması için üzerinde işlem yapacağı verilerin tutulması için.