Oncelikle formal bilginin olmasi gerekiyor. Cozmeye calistigin problem nedir?
- Sort problemi mi?
- Search problemi mi?
- Set problemi mi?
Karsilasacagin problemlerin ezici cogunlugu bu 3 baslikta halledilir.
Number theory problemleri ( asal sayi, common divisor, prng vs ) isin spesifik algoritmalar var, bunlari zaten ogretirler.
Dynamic programming uygulayabilecegin problemler olabilir, onun da metotlari var.
Greedy algoritmalarla cozebilecegin nispeten basit problemler var.
Birden fazla cozum varsa ve mukemmel cozume ihtiyac yoksa heuristic algoritmalar gelistirilebilir.
Data-structure bilgisi de yeterli olmali. Onune gelen her collection icin Array/List kullanan adam algoritma gelistiremez.
Genel gecer bir formulu yok, once teorik bilgin olmali; sonra bu teorik bilgiyi pratige dokerek yetkinlestirmelisin kendini. Problemin dogasina, ihtiyaclara ve elindeki kaynaklara gore algoritma sekillenir. Dusuk RAM varsa baska algoritma kullanirsin, tekrarli listede farkli sort algoritmasi kullanirsin.