CodeBlanks Logo Icon CodeBlanks

std::sort

std::sort ile sıralamayı öğrenirsin.

std::sort

std::sort bir aralığı yerinde sıralar. İki iterator alır: std::sort(v.begin(), v.end()). Varsayılan olarak artan sırada (küçükten büyüğe) sıralar. <algorithm> başlığında tanımlıdır.

Sıralama, rastgele erişim iterator gerektirir; bu yüzden std::vector ve std::array üzerinde çalışır ama std::list üzerinde çalışmaz. Sıralama verimlidir (genellikle O(n log n)). Öğeleri doğrudan kapsayıcıda değiştirir; yeni bir kapsayıcı oluşturmaz. Bu yüzden 'yerinde' (in-place) sıralama denir.

Azalan sıralama

Azalan sıralamak için üçüncü parametre olarak std::greater<int>() verirsin: std::sort(v.begin(), v.end(), std::greater<int>());. Bu, > operatörünü kullanarak büyükten küçüğe sıralar.

std::greater, <functional> başlığında tanımlı bir functor'dur. Bir functor, operator() tanımlayan sınıftır; bir fonksiyon gibi çağrılabilir. İleri seviyede kendi functor'larını yazabilir veya lambda kullanabilirsin; ama std::greater gibi hazır functor'lar çoğu durumda yeterlidir.

Uygulama Vektörü sırala ve yazdır

v = {5, 2, 8, 1, 9} vektörünü std::sort ile artan sırada sırala. Sonra bir for döngüsüyle her öğeyi boşlukla yazdır.

Başlangıç kodu

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {5, 2, 8, 1, 9};
    // std::sort ile sırala, for ile yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> v = {5, 2, 8, 1, 9};
    std::sort(v.begin(), v.end());
    for (int x : v) {
        std::cout << x << " ";
    }
    return 0;
}

Beklenen çıktı

1 2 5 8 9

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 std::sort varsayılan olarak nasıl sıralar?

main.cpp
std::sort(v.begin(), v.end());
  • Azalan (büyükten küçüğe)
  • Rastgele sıralar
  • Ters çevirir
  • Artan (küçükten büyüğe) Doğru cevap

Açıklama: Varsayılan artan sıradır.

2 sort çağrısını tamamla

Soru
std::____(v.begin(), v.end());
Cevap
std::sort(v.begin(), v.end());

Açıklama: std::sort aralığı sıralar.

3 Parçayı rolüne eşle

Kavram Anlamı
std::sort(begin, end) Artan sıralama
std::greater<int>() Azalan sıralama
v.begin() Aralık başı
v.end() Aralık sonu

Orta seviye bölümündeki tüm dersler