Ini adalah proyek yang bertujuan untuk menjadi implementasi buku teks dari struktur dan algoritma data umum. Ini menyediakan implementasi demo dan tes unit.
Kode ini dimaksudkan untuk menjadi bersih dan sederhana , dan efisiensi bukanlah tujuan utama. Saya akan menulis implementasi yang paling efisien dalam hal kompleksitas perhitungan atau memberikan implementasi versi yang berbeda.
Contoh kode:
template < class Iter >
void linearInsert (Iter first, Iter last)
{
auto insertionPoint = std::upper_bound (first, last, *last);
std::rotate (insertionPoint, last, last + 1 );
}
template < class Iter >
void insertionSort (Iter first, Iter last)
{
// [begin, p) sorted
// [p, end) to be processed
for ( auto p = first; p != last; ++p) {
linearInsert (first, p);
}
}Jika Anda ingin mempraktikkan keterampilan pengkodean Anda, cukup unduh proyek dan tulis ulang algoritma yang relevan dan menjalankan tes unit sendiri.
Saat Anda menerapkan algoritma yang membutuhkan algoritma atau struktur data lain, Anda dapat dengan mudah menggunakan implementasi yang ada di perpustakaan standar atau dalam repo dan berkonsentrasi pada ide -ide utama, misalnya: misalnya:
template < class Iter >
void quickSort (Iter first, Iter last)
{
if (last - first <= 1 ) {
return ;
}
auto partitionPoint = partition (first, last);
quickSort (first, partitionPoint);
quickSort (partitionPoint, last);
} Dalam contoh di atas, partition (diimplementasikan dalam repo) dijamin akan mengembalikan dua rentang yang tidak kosong jika panjang rentang input jika lebih besar dari satu sehingga kami yakin bahwa kedua panggilan rekursi berikut akan terjadi pada dimensi yang lebih kecil.
Anda disambut untuk berkontribusi pada proyek ini dengan baik: