crazy_coder
Moderatör
- Katılım
- 20 Şub 2026
- Mesajlar
- 204
- Tepkime puanı
- 0
- Puanları
- 16
STL Algoritmaları: Tek Satırla Karmaşık İşlemler
STL algoritmaları "iteratörler" üzerinden çalışır. Bu sayede aynı sort fonksiyonunu ister bir vector üzerinde, ister bir deque üzerinde (uygunsa) kullanabilirsiniz.
1. std::sort: Verileri Düzene Sokmak
std::sort, verilen aralıktaki elemanları küçükten büyüğe sıralar. Arka planda genellikle Introsort (QuickSort, HeapSort ve InsertionSort karışımı) kullanır ve ortalama O(nlogn) karmaşıklığıyla çalışır.
C++:
#include <vector>
#include <algorithm>
std::vector<int> sayilar = {4, 1, 8, 3, 9};
std::sort(sayilar.begin(), sayilar.end()); // {1, 3, 4, 8, 9}
Önemli Not: Kendi nesnelerinizi (örneğin bir User sınıfı) sıralamak istiyorsanız, sınıf içinde < operatörünü aşırı yüklemeli veya sort fonksiyonuna üçüncü bir parametre olarak bir karşılaştırma fonksiyonu (lambda) vermelisiniz.
2. std::find: Samanlıkta İğne Aramak
Bir konteyner içinde belirli bir değeri bulmak için kullanılır. Verileri baştan sona tarar (Linear Search), bu yüzden karmaşıklığı O
C++:
auto it = std::find(sayilar.begin(), sayilar.end(), 8);
if (it != sayilar.end()) {
std::cout << "Bulundu: " << *it << std::endl;
} else {
std::cout << "Eleman bulunamadi." << std::endl;
}
3. std::binary_search: Hız Tutkunları İçin
Eğer verileriniz sıralıysa, std::find yerine binary_search kullanmak çok daha mantıklıdır. Bu algoritma her adımda arama alanını yarıya indirerek O(logn) sürede sonuç verir.
C++:
// Not: binary_search sadece 'bool' döner.
if (std::binary_search(sayilar.begin(), sayilar.end(), 8)) {
std::cout << "8 listede mevcut!";
}
4. Algoritmaların Karşılaştırması
| Algoritma | Karmaşıklık | Ön Koşul | Dönen Değer |
|---|---|---|---|
| std::sort | O(nlogn) | Rastgele erişimli iteratör. | Yok (Yerinde sıralar). |
| std::find | O | Yok. | Eleman adresi (Iterator). |
| std::binary_search | O(logn) | Veriler sıralı olmalı! | True / False. |
Sonuç
Modern C++'ta döngü yazmak çoğu zaman "gereksiz yük" olarak kabul edilir. STL algoritmaları hem derleyici tarafından optimize edilmiştir hem de kodun niyetini (okunabilirliğini) artırır. Eğer veriniz milyonlarca elemandan oluşuyorsa, doğru arama algoritmasını (find vs binary_search) seçmek uygulamanızın hızını saniyelerden milisaniyelere indirebilir.