Quicksort menjelaskan kepada anak-anak

16

Tahun lalu, saya membaca makalah yang fantastis tentang "Mekanika Kuantum untuk Taman Kanak-Kanak" . Itu bukan kertas mudah.

Sekarang, saya ingin tahu bagaimana menjelaskan quicksort dengan kata-kata sesederhana mungkin. Bagaimana saya bisa membuktikan (atau paling tidak gelombang tangan) bahwa kompleksitas rata-rata adalah , dan apa kasus terbaik dan terburuk, untuk kelas taman kanak-kanak? Atau setidaknya di sekolah dasar?O(nlogn)

Jonaprieto
sumber
9
Anda ingin membuktikan kompleksitas quicksort ... untuk sekelompok anak berusia tiga tahun ...? Semoga berhasil.
2
Coba gunakan bahasa mereka, masalahnya adalah itu sangat terbatas dan secara biologis mereka tidak siap untuk kompleksitas ini. Langkah-langkah berikut seperti dalam algoritma tidak sepenuhnya dikembangkan sampai mereka berusia enam atau tujuh tahun. Anda menghadapi tantangan biologis.
4
Saya sebenarnya tidak menyarankannya untuk Taman Kanak-kanak, tetapi mencari youtube untuk quicksort (dan algoritma penyortiran lainnya) menyediakan banyak representasi yang bagus. Saya pribadi lebih suka tarian rakyat Hugarian. Lihat youtube.com/watch?v=ywWBy6J5gz8 .
2
Makalah yang Anda bicarakan memiliki judul yang menarik tetapi konten yang sangat kompleks seperti Hilbert Space Model, jadi apa yang Anda cari sebenarnya?
2
Saya akan menyerah pada upaya untuk menjelaskan sepenuhnya quicksort, dan bukannya mencoba memberi anak-anak pemahaman tentang "memecah belah dan menaklukkan". Bahkan jika mereka belum cukup umur untuk sepenuhnya mengalami rekursi, gagasan memecah masalah besar menjadi masalah yang lebih kecil akan sangat berharga. Secara pribadi saya akan mengambil pemahaman dasar yang kuat tentang divide-and-conquor setiap hari atas gagasan tidak lengkap tentang algoritma yang kompleks.
Vincent Gable

Jawaban:

14

Pada intinya, Quicksort adalah ini:

  1. Ambil item pertama.
  2. Pindahkan segala sesuatu yang kurang dari item pertama itu ke kiri, semuanya lebih besar ke kanan (dengan asumsi urutan naik).
  3. Perulangan di setiap sisi.

Saya pikir setiap anak berusia 4 tahun di planet ini dapat melakukan 1 dan 2. Rekursi ini mungkin membutuhkan sedikit penjelasan, tetapi seharusnya tidak terlalu sulit bagi mereka.

  1. Ulangi di sisi kiri, abaikan kanan untuk saat ini (tapi ingat di mana tengahnya)
  2. Terus ulangi dengan sisi kiri sampai Anda tidak mendapatkan apa-apa. Sekarang kembali ke sisi kanan terakhir yang Anda abaikan, dan ulangi prosesnya di sana.
  3. Setelah Anda kehabisan sisi kanan dan kiri, Anda selesai.

Adapun kompleksitasnya, kasus terburuk seharusnya cukup mudah. Pertimbangkan saja array yang sudah diurutkan:

1 2 3 4
  2 3 4
    3 4
      4

Cukup mudah untuk melihat (dan membuktikan) bahwa ini .12n2

Saya tidak terbiasa dengan bukti rata-rata, jadi saya tidak bisa membuat saran untuk itu. Anda bisa mengatakan bahwa dalam array yang tidak disortir dengan panjang probabilitas untuk memilih item terkecil atau terbesar adalah 2l , jadi ...?2n

Kevin
sumber
Mungkin rekursi (d & c) yang terbaik dan paling alami dijelaskan dengan paralelisme yang melekat.
Raphael
2
Saya akan setuju. Naluri saya adalah menggunakan metafora memberikan dua tumpukan kepada teman-teman Anda untuk dikerjakan.
Christian Mann
3
Saya mengklaim bahwa anak berusia empat tahun (dengan kemungkinan pengecualian) pada dasarnya tidak dapat memahami rekursi, tidak peduli seberapa keras Anda berusaha. Otak tidak cukup dewasa. Ada fase yang jelas dalam perkembangan otak, misalnya titik di mana anak-anak menjadi sadar diri, di mana mereka menjadi sadar akan konsekuensi masa depan dari tindakan saat ini, dan di mana mereka pertama kali memahami sarkasme yang mengikuti jadwal yang dikontrol ketat yang tidak dapat disusun kembali dengan sengaja dan sangat dilestarikan pada anak-anak. Saya percaya pemahaman rekursi jatuh dalam kategori yang sama.
Konrad Rudolph
16

Quicksort sebenarnya cukup mudah untuk dipahami, jika mereka memahami penghitungan dasar dan pembagian dengan 2. Membuat banyak kartu flash X, beri nomor 1 - X, dan kocok. Maka inilah penjelasannya:

OK, kami punya setumpuk kartu (misalkan 20) di sini. Kami ingin mengaturnya, jadi 1 adalah yang pertama, kemudian 2, kemudian 3, dan seterusnya. Inilah cara yang sangat cepat untuk melakukannya.

Pertama, mari kita pergi melalui dek ini dan membuat dua tumpukan darinya. Setengah dari 20 adalah 10, jadi apa pun yang lebih besar dari 10 masuk tumpukan ini di sebelah kanan, dan apa pun yang lebih kecil masuk tumpukan ini di sebelah kiri. (Pastikan untuk menunjukkan saat Anda pergi.)

Sekarang, mari kita lakukan hal yang sama dengan tumpukan yang lebih kecil. Apa setengah dari 10? (Seseorang berkata "lima!") Itu benar! Jadi apapun yang lebih besar dari 5 masuk tumpukan ini di sebelah kanan, dan apa pun yang lebih kecil masuk tumpukan ini di sebelah kiri.

Dan di sini, kita punya kelompok yang lebih besar dari 10. Jadi setengah dari 10 adalah 5, dan apa yang 10 ditambah 5? (Seseorang berkata "lima belas!") Itu benar! Jadi apapun yang lebih besar dari 15 masuk tumpukan ini di sebelah kanan, dan sesuatu yang lebih kecil dari 15 masuk tumpukan di sebelah kiri.

Dan sekarang tumpukannya semakin kecil sehingga Anda dapat dengan mudah melihatnya dan menertibkannya. Lihat, ini dia 2, 4, 5, 3, 1. Jadi kami hanya mengubah mereka seperti ini, dan Anda bisa lihat 1, 2, 3, 4, 5. Jadi mari kita lakukan hal yang sama dengan tumpukan lainnya, dan kemudian kita hanya mengatur tumpukan, dan lihat! Mereka dalam urutan 1 hingga 20!

Selamat. Anda baru saja mengajar banyak anak-anak prinsip-prinsip dasar dari algoritma quicksort adaptif! Anda bisa sedikit lebih dalam dari itu tergantung pada kematangan mental, tetapi melangkah lebih jauh dari titik ini membutuhkan pemahaman tentang logika formal.

Sedangkan untuk membuktikan kompleksitasnya, itu lebih sulit. Ini adalah salah satu hal yang memerlukan logika formal, dan mereka harus memahami prinsip dasar notasi O besar. Anda mungkin ingin menunda bagian itu pada awalnya.

Mason Wheeler
sumber
Saya tidak berpikir contoh Anda tidak baik karena Anda pada dasarnya mengurutkan pada kunci, bukan nilai-nilai, dan Anda hanya bisa tahu apa yang ada di posisi 15 dengan telah diurutkan.
Thorbjørn Ravn Andersen
@ Thorbjørn: Siapa yang mengatakan sesuatu tentang pasangan kunci / nilai? Ini adalah bilangan bulat sederhana untuk menjelaskan konsep dasar.
Mason Wheeler
Memikirkannya atas algoritma yang Anda gambarkan bukanlah quicksort, karena Anda tidak menggunakan elemen pivot.
Thorbjørn Ravn Andersen
1
@ ThorbjørnRavnAndersen: Tentu saja dia tahu; hanya saja dia tahu elemen mana yang ada sehingga bisa memilih median.
Raphael
@ Raphael dan distribusinya. Kartu dapat berupa nilai dan warna apa saja dan hanya memiliki stiker dengan nomor antara 1 dan 20. Oleh karena itu referensi saya ke kunci / indeks dan bukan nilainya.
Thorbjørn Ravn Andersen
2

Bagaimana dengan ini?

Ilmu Komputer Unplugged - Algoritma Penyortiran

Itu tidak cukup mencakup semua pertanyaan Anda, tapi ini awal yang baik.

Sumber daya lebih banyak tentang topik ini ditautkan di sini .

Mereka juga menyediakan video yang menjelaskan algoritma pengurutan (termasuk quicksort) di sini . Video ini sangat membantu memahami perbedaan antara berbagai algoritma penyortiran untuk anak-anak muda.

TimB
sumber
yang keren ! Cukup mudah dimengerti.
Mayur Patil
1

Lihat keindahan grafis demo kecil ini .

quicksort.

gbjbaanb
sumber
1
Saya pikir itu mungkin terlalu abstrak untuk anak-anak.
Raphael
3
Bukan untuk mempermalukan diriku sendiri, tapi aku tidak mengerti gambar itu sampai aku akhirnya dijelaskan quicksort di kelas.
Christian Mann
Punya +1 karena ini adalah apa yang pertama kali terpikir oleh saya ketika saya membaca pertanyaan, tapi kemudian saya seorang pembelajar visual.
Joshua Drake
3
Ini benar-benar cara yang salah untuk menjelaskan cara kerja quicksort . Jika Anda sudah tahu quicksort, Anda dapat mengonfirmasi bahwa animasi ini adalah tentang quicksort. Jika Anda tidak tahu quicksort, itu tidak mengatakan apa pun kecuali quicksort adalah algoritma penyortiran yang cukup cepat yang menggunakan beberapa sihir. Bergantung pada siapa audiensnya, Anda mungkin dapat memotivasi audiens untuk belajar tentang quicksort dengan menunjukkan animasi ini, tetapi tidak menjelaskan apa pun yang penting tentang cara kerjanya.
Tsuyoshi Ito
Animasi ini cukup bagus tetapi sejauh ini dapat dimengerti untuk pemula bahkan untuk sarjana pada kesempatan pertama.
Jonaprieto