Pengurutan dan Partisi: sort, stable_partition
Urutkan dan partisi kontainer dengan std::sort dan std::stable_partition
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 ascendingPembanding Kustom
Berikan pembanding (lambda atau funktor) untuk mengurutkan berdasarkan kriteria lain.
std::sort(v.begin(), v.end(),
[](int a, int b) { return a > b; }); // descendingMengurutkan 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, sortedstd::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 elementstd::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 oddstd::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.
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
- Algoritma Tanpa Modifikasi: find, count, all_of
- Modifikasi: transform, copy_if, replace
- Pengurutan dan Partisi: sort, stable_partition
- Algoritma Numerik: accumulate, reduce, transform_reduce