C++ Academy · Pelajaran

Pengurutan dan Partisi: sort, stable_partition

Urutkan dan partisi kontainer dengan std::sort dan std::stable_partition

Pelajaran 3 dari 413 langkah

Pengurutan dan Partisi: sort, stable_partition adalah pelajaran C++ Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C++ Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C++ Academy mencakup 4 pelajaran total.

std::sort

Algoritme pengurutan serbaguna utama. O(N log N) secara rata-rata. Dilakukan di tempat. Tidak dijamin stabil.

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

Pembanding Kustom

Berikan pembanding (lambda atau funktor) untuk mengurutkan berdasarkan kriteria lain.

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

Mengurutkan Tipe Kustom

Berikan pembanding yang membandingkan anggota tertentu, atau definisikan operator< pada tipe tersebut.

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

Sama seperti sort, tetapi mempertahankan urutan relatif elemen yang sama. Sedikit lebih lambat (biasanya memerlukan memori tambahan O(N log^2 N)).

std::partial_sort

Tempatkan k elemen terkecil di awal dalam keadaan terurut. Elemen yang tersisa berada dalam urutan yang tidak ditentukan. Lebih cepat daripada pengurutan penuh jika Anda hanya memerlukan k teratas.

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

Mempartisi sehingga elemen pada posisi nth sama seperti posisinya dalam rentang yang sepenuhnya terurut. Semua elemen sebelumnya ≤ elemen ke-n; semua elemen sesudahnya ≥ elemen ke-n. Rata-rata O(N).

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

std::is_sorted

Memeriksa apakah suatu rentang sudah terurut.

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

std::partition

Mengatur ulang suatu rentang sehingga elemen yang memenuhi predikat berada di awal. Mengembalikan iterator ke elemen pertama yang tidak memenuhi predikat. Tidak stabil.

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

Seperti partition, tetapi mempertahankan urutan relatif di dalam setiap kelompok.

Mengurutkan Berdasarkan Beberapa Kunci

Gunakan pembanding yang membandingkan kunci utama, lalu kunci sekunder jika kunci utama sama.

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;
    });

Pencarian Biner pada Rentang Terurut

Setelah terurut, gunakan std::lower_bound, std::upper_bound, dan std::binary_search untuk pencarian O(log N).

Pemeriksaan Singkat

Algoritme mana yang mempertahankan urutan relatif elemen yang sama setelah pengurutan?

Ringkasan

Gunakan std::sort untuk pengurutan umum, std::stable_sort saat urutan elemen yang sama penting, std::partial_sort untuk k teratas, std::nth_element untuk memilih elemen, dan std::partition/std::stable_partition untuk mengelompokkan.

Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pengurutan dan Partisi: sort, stable_partition” gratis?

Ya — teks lengkap “Pengurutan dan Partisi: sort, stable_partition” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C++ Academy, upgrade ke CoddyKit PRO. Kursus C++ Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pengurutan dan Partisi: sort, stable_partition”?

Urutkan dan partisi kontainer dengan std::sort dan std::stable_partition Kamu berlatih C++ Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C++ Academy?

Tidak diperlukan pengalaman sebelumnya. C++ Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Pengurutan dan Partisi: sort, stable_partition” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Algoritma Tanpa Modifikasi: find, count, all_of
  2. Modifikasi: transform, copy_if, replace
  3. Pengurutan dan Partisi: sort, stable_partition
  4. Algoritma Numerik: accumulate, reduce, transform_reduce
← Kembali ke C++ Academy