# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.yavuzlar.org/egitim/c-plus-plus/4.0-veri-yapilari-data-structures/4.10-algoritmalar.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
