Genel konuşmayacağım, kendi adıma konuşacağım. Algoritmalarla içli dışlı biri olarak kullandığım dillerin kütüphanelerinin hazır olarak sunduğu sıralama fonksiyonlarını kullanıyorum: C++, Python, JavaScript. İdeal performansta implemente edilmiş fonksiyonlar sunuyor bu diller bildiğim kadarıyla. İhtiyaçlarımı fazlasıyla karşılıyorlar.
Fikir olarak quick Sort'un da merge Sort'un da işe yaradığı spesifik algoritma problemleri var ama gerçek hayatta (hobi dışında) henüz kullanma ihtiyacı duymadım. Mesela bir permütasyondaki
inversion sayısını hızlıca saymak için merge sort kullanılabiliyor ama başka çözümler de yok değil. Aslına bakarsanız bu algoritmaların kendilerinden çok kullandığı teknikleri öğrenmek fayda sağlıyor. Mesela merge Sort'ta hem
divide & conquer hem de iki sıralı listeyi tek sıralı listeye dönüştürme (
merge) teknikleri kullanılıyor ve algoritma bu sayede hızlı çalışıyor.
Gerçek hayatta işime yarayan sayılı tekniklerden biri
two pointers idi. Kolay olmasına karşın işe yarayan, çok hoş bulduğum bir fikir.
Dillerin kütüphaneleri aslında tıpkı sıralama fonksiyonları gibi çokça hazır fonksiyon sunuyor, bu yüzden kendim yazmaya ihtiyaç duyduğum pek bir fonksiyon olmadı. Tabii bu benim üzerinde çalıştığım projelerle de alakalı bir durum çünkü projeden projeye ihtiyaçlar değişkenlik gösterebiliyor.
Kesinlikle ve kesinlikle. "dolaylı"ya takılmayın, algoritmik düşünme yeteneğinizin gelişimi uzun vadede elzem. Tüm programlama hayatınızı etkileyecek bir seviyeden bahsediyorum. Öğrendiğiniz algoritmaları ve teknikleri pratikte kullanmasanız bile bir problemin çözümünü düşünürken öğrendiklerinizin ettiği dolaylı yardımı hissediyorsunuz. Burada "problem", uğruna kod yazdığınız herhangi bir hedefi temsil ediyor. Bir çözümü hızlandırmak sizin için alışkanlık hâline geliyor ve göreceli olarak daha az zorlanıyorsunuz çünkü öyle düşünmeye alışık oluyorsunuz. Çözüm hızlandırmanın yanı sıra çözüm bulmak da kolaylaşıyor.
"Uzun vadede" kısmına tekrar değinmek isterim. Bu konuda gelişmek zaman istiyor ama süreç meyvesini güzelce veriyor. Damlaya damlaya göl oluyor.
Buna "evet." diyeceğim bir senaryo gelmiyor aklıma. Öyle ya da böyle faydası dokunacaktır. Temel bilimleri öğrenmek gibi düşünün.