0Pricing
C++ Academy · Ders

Sıralama ve Bölümleme: sort, stable_partition

Kapsayıcıları std::sort ve std::stable_partition ile sıralayın ve bölümlere ayırın

Sıralama ve Bölümleme: sort, stable_partition, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.

std::sort

Genel amaçlı temel sıralama algoritmasıdır. Ortalama karmaşıklığı O(N log N) değerindedir. Yerinde çalışır. Kararlı olması garanti edilmez.

#include <algorithm>
std::vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6};
std::sort(v.begin(), v.end());
// v is sorted ascending

Özel Karşılaştırıcı

Başka ölçütlere göre sıralamak için bir karşılaştırıcıyı (lambda veya işlev nesnesi) sort işlevine geçirin.

std::sort(v.begin(), v.end(),
    [](int a, int b) { return a > b; });   // descending

Özel Türleri Sıralama

Belirli üyeleri karşılaştıran bir karşılaştırıcı sağlayın veya tür üzerinde operator< tanımlayın.

struct Person { std::string name; int age; };
std::vector<Person> people;
std::sort(people.begin(), people.end(),
    [](const Person& a, const Person& b) { return a.age < b.age; });

std::stable_sort

sort ile aynıdır, ancak eşit öğelerin göreli sırasını korur. Biraz daha yavaştır (genellikle O(N log^2 N) ek bellek kullanır).

std::partial_sort

En küçük k öğeyi ilk sıraya yerleştirir (sıralı olarak). Kalan öğelerin sırası belirtilmemiştir. Yalnızca ilk k öğeye ihtiyacınız olduğunda tam sıralamadan daha hızlıdır.

std::vector<int> v = {5, 2, 8, 1, 9, 3};
std::partial_sort(v.begin(), v.begin() + 3, v.end());
// first 3 elements are the smallest, sorted

std::nth_element

nth konumundaki öğe, aralık tamamen sıralanmış olsaydı bulunacağı konumda olacak şekilde bölümlere ayırır. Önündeki her öğe bundan küçük veya eşittir; arkasındaki her öğe bundan büyük veya eşittir. Ortalama karmaşıklığı O(N) değerindedir.

std::nth_element(v.begin(), v.begin() + 2, v.end());
// v[2] is the 3rd smallest element

std::is_sorted

Bir aralığın zaten sıralı olup olmadığını denetler.

if (std::is_sorted(v.begin(), v.end())) {
    std::cout << "already sorted";
}

std::partition

Bir aralığı, bir koşulu sağlayan öğeler öne gelecek şekilde yeniden düzenler. Koşulu sağlamayan ilk öğeye bir yineleyici döndürür. Kararlı değildir.

std::vector<int> v = {1, 2, 3, 4, 5};
auto pivot = std::partition(v.begin(), v.end(),
    [](int x) { return x % 2 == 0; });
// even numbers come first, then odd

std::stable_partition

partition gibidir, ancak her grubun içindeki göreli sırayı korur.

Birden Çok Anahtara Göre Sıralama

Önce birincil anahtarı, birincil anahtarlar eşitse ikincil anahtarı karşılaştıran bir karşılaştırıcı kullanın.

std::sort(people.begin(), people.end(),
    [](const Person& a, const Person& b) {
        if (a.age != b.age) return a.age < b.age;
        return a.name < b.name;
    });

Sıralı Aralıklarda İkili Arama

Sıralama yapıldıktan sonra O(log N) karmaşıklıklı aramalar için std::lower_bound, std::upper_bound ve std::binary_search kullanın.

Hızlı Kontrol

Sıralama sonrasında eşit öğelerin göreli sırasını hangi algoritma korur?

Özet

Genel sıralama için std::sort, eşit öğelerin sırası önemli olduğunda std::stable_sort, ilk k öğe için std::partial_sort, seçim yapmak için std::nth_element, gruplama için de std::partition/std::stable_partition kullanın.

Sıkça Sorulan Sorular

“Sıralama ve Bölümleme: sort, stable_partition” dersi ücretsiz mi?

Evet — “Sıralama ve Bölümleme: sort, stable_partition” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.

“Sıralama ve Bölümleme: sort, stable_partition” dersinde ne öğreneceğim?

Kapsayıcıları std::sort ve std::stable_partition ile sıralayın ve bölümlere ayırın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C++ Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Sıralama ve Bölümleme: sort, stable_partition” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Değiştirmeyen Algoritmalar: find, count, all_of
  2. Değiştiren Algoritmalar: transform, copy_if, replace
  3. Sıralama ve Bölümleme: sort, stable_partition
  4. Sayısal Algoritmalar: accumulate, reduce, transform_reduce
← C++ Academy Sayfasına Dön