Analiza algorytmów polega między innymi na odpowiedzi na pytania:
1) Czy problem może być rozwiązany na komputerze w dostępnym ezasie i pamięci?
2) Który ze znanych algorytmów należy zastosować w danych okolicznościach?
3) Czy istnieje lepszy algorytm od rozważanego? Czy jest on optymalny?
Konstruując algorytm należy zwracać uwagę na :
- poprawność semantyczną
- prostotę
- czas działania
- ilość zajmowanej pamięci
- optymalność
- okoliczności w jakich należy go używać , a w jakich nie
Złożoność obliczeniową algorytmu definiuje się jako ilość zasobów komputerowych, potrzebnych do jego wykonania.
Wyróżniamy złożoność pamięciową i czasową.
Będziemy się zajmować głównie złożonością czasową.
Miara złożoności musi być uniwersalna czyli oderwana od szczegółów natury "sprzętowej" tj.
- Jaki komputer jest używany ?
- Jaka jest częstotliwość zegara taktującego procesor ?
- Czy program będzie jedynym wykonywanym na komputerze ? Jeśli nie to jaki jest jego priorytet ?
- Jakiego kompilatora używamy?
- Czy w kompilatorze włączono opcje optymalizacji kodu ? ...etc