> For the complete documentation index, see [llms.txt](https://docs.yavuzlar.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yavuzlar.org/egitim/c-plus-plus/4.0-veri-yapilari-data-structures/4.10-algoritmalar.md).

# 4.10 Algoritmalar

C++ algoritmaları, belirli bir sorunu çözmek veya belirli bir görevi yerine getirmek için izlenen adımlar veya işlemler dizisidir. Algoritmalar, verileri işlemek, sıralamak, aramak ve çeşitli matematiksel hesaplamalar yapmak için yaygın olarak kullanılır. C++, algoritmaların uygulamaları için kapsamlı bir standart şablon kütüphanesi (STL) sunar.

#### Algoritmaların Temel Özellikleri

1. **Sonluluk**: Bir algoritmanın sonlu bir sayıda adımda tamamlanması gerekir.
2. **Tanımlılık**: Her bir adımın açık ve net bir şekilde tanımlanması gerekir.
3. **Girdi**: Algoritmalar, belirli bir girdi alabilir.
4. **Çıktı**: Algoritmalar, girdilere dayanarak belirli bir çıktı üretir.
5. **Etkinlik**: Algoritmanın mümkün olan en az kaynakla çalışması beklenir.

#### C++’ta Yaygın Algoritmalar

C++ STL, birçok yerleşik algoritma içerir. Bu algoritmalar, `#include <algorithm>` başlığı altında bulunur. İşte bazı yaygın C++ algoritmaları:

**1. Sıralama Algoritmaları**

**`std::sort`**: Elemanları sıralamak için kullanılır.

```cpp
#include <iostream>
#include <vector>
#include <algorithm> // sort için

int main() {
    std::vector<int> sayilar = {5, 2, 8, 1, 3};

    std::sort(sayilar.begin(), sayilar.end()); // Artan sıralama

    std::cout << "Sıralı sayılar: ";
    for (int sayi : sayilar) {
        std::cout << sayi << " ";
    }
    std::cout << std::endl;

    return 0;
}
```

**2. Arama Algoritmaları**

**`std::find`**: Bir elemanı bulmak için kullanılır.

```cpp
#include <iostream>
#include <vector>
#include <algorithm> // find için

int main() {
    std::vector<int> sayilar = {5, 2, 8, 1, 3};
    int aranacak = 8;

    auto it = std::find(sayilar.begin(), sayilar.end(), aranacak);

    if (it != sayilar.end()) {
        std::cout << aranacak << " bulundu!" << std::endl;
    } else {
        std::cout << aranacak << " bulunamadı!" << std::endl;
    }

    return 0;
}
```

**3. Kopyalama Algoritmaları**

**`std::copy`**: Bir koleksiyondaki elemanları başka bir koleksiyona kopyalamak için kullanılır.

```cpp
#include <iostream>
#include <vector>
#include <algorithm> // copy için

int main() {
    std::vector<int> sayilar1 = {1, 2, 3, 4, 5};
    std::vector<int> sayilar2(sayilar1.size());

    std::copy(sayilar1.begin(), sayilar1.end(), sayilar2.begin());

    std::cout << "Kopyalanan sayılar: ";
    for (int sayi : sayilar2) {
        std::cout << sayi << " ";
    }
    std::cout << std::endl;

    return 0;
}
```

#### Sonuç

C++’ta algoritmalar, verileri işlemek ve belirli görevleri yerine getirmek için kritik öneme sahiptir. C++ Standard Template Library (STL), sık kullanılan algoritmaların etkili bir şekilde uygulanmasını sağlar.
