Quicksort çocuklara açıkladı


16

Geçen yıl, “Anaokulu İçin Kuantum Mekaniği” üzerine harika bir makale okuyordum . Kolay bir kağıt değildi.

Şimdi, çabuk çabayı mümkün olan en basit kelimelerle nasıl açıklayacağımı merak ediyorum. Bir anaokulu sınıfına ortalama karmaşıklığın olduğunu ve en iyi ve en kötü durumların neler olduğunu nasıl kanıtlayabilirim (veya en azından el dalgalarını) ? Ya da en azından ilkokulda mı?Ö(ngünlükn)


9
Çabuk sıralamanın karmaşıklığını kanıtlamak istiyor musun ... bir grup üç yaşındaki çocuğa ...? İyi şanslar.

2
Dillerini kullanmaya çalışın, sorun çok sınırlı olması ve biyolojik olarak bu karmaşıklığa hazır olmamaları. Algoritmada olduğu gibi aşağıdaki adımlar altı veya yedi yaşına gelene kadar tam olarak gelişmemiştir. Biyolojik bir sorunla karşı karşıyasınız.

4
Aslında Kindergarten için bunu tavsiye etmem, ama hızlı sıralama (ve diğer sıralama algoritmaları) için youtube arama birçok iyi temsil sağlar. Ben şahsen Hugaryan halk danslarını tercih ederim. Bkz. Youtube.com/watch?v=ywWBy6J5gz8 .

2
Bahsettiğiniz makalenin akılda kalıcı bir başlığı var, ancak Hilbert Uzay Modeli gibi çok karmaşık bir içeriği var, o zaman gerçekten neyin peşindesiniz?

2
Ben quicksort tam olarak açıklamak girişimi ve bunun yerine çocuklara "böl ve fethet" bir anlayış vermeye çalışın vazgeçmek istiyorum. Tamamen özyinelemeyi sağlayacak kadar yaşlı olmasalar bile, büyük bir problemi daha küçük problemlere bölme fikri gerçekten değerli olacaktır. Şahsen, karmaşık algoritmalar eksik bir kavramı üzerinde her gün böl ve fethetmek için sağlam bir temel anlayış alacağım.
Vincent Gable

Yanıtlar:


14

Özünde Quicksort şudur:

  1. İlk öğeyi al.
  2. İlk öğeden daha küçük olan her şeyi sol tarafa, her şey sağdan daha büyük (artan düzen varsayarak) hareket ettirin.
  3. Her iki tarafta da çare.

Gezegendeki her 4 yaşındaki çocuğun 1 ve 2 yapabileceğini düşünüyorum. Özyineleme biraz daha fazla açıklama alabilir, ancak onlar için bu kadar zor olmamalıdır.

  1. Sol tarafta tekrarlayın, şimdilik sağını görmezden gelin (ancak ortadaki yeri hatırlayın)
  2. Hiçbir şeye ulaşıncaya kadar sol taraflarla tekrar etmeye devam edin. Şimdi görmezden geldiğiniz son sağ tarafa dönün ve işlemi orada tekrarlayın.
  3. Sağ ve sol taraflarınız bittiğinde işiniz bitti.

Karmaşıklığa gelince, en kötü durum oldukça kolay olmalıdır. Zaten sıralanmış bir diziyi düşünün:

1 2 3 4
  2 3 4
    3 4
      4

Oldukça görmek (ve kanıtlamak) oldukça kolay .12n2

Ortalama dava kanıtına aşina değilim, bu yüzden gerçekten bir öneride bulunamıyorum. Sıralanmamış bir uzunluk dizisinde en küçük veya en büyük öğeyi seçme olasılığının 2 olduğunu söyleyebilirsiniz.l , yani ...?2n


Belki (d & c) özyineleme en iyisidir ve en doğal olarak doğal paralellik ile açıklanır.
Raphael

2
Katılıyorum. İçgüdüm, arkadaşlarınıza üzerinde çalışmak için iki kazık vermek için bir metafor kullanmaktı.
Christian Mann

3
Dört yaşındakilerin (olası istisnalar dışında), ne kadar uğraşsanız da, özyinelemeyi temelden kavrayamadığını iddia ediyorum. Beyin yeterince olgun değil. Beyin gelişiminde iyi tanımlanmış aşamalar vardır, örneğin çocukların kendini tanımaları, mevcut eylemlerin gelecekteki sonuçlarının farkında olmaları ve kasıtlı olarak yeniden düzenlenemeyen sıkıca kontrol edilen bir programı takip eden alaycılığı ilk anladıkları nokta. çocuklar arasında oldukça korunmuştur. Özyinelemeyi anlamanın aynı kategoriye girdiğine inanıyorum.
Konrad Rudolph

16

Quicksort'u anlamak oldukça kolaydır, eğer temel sayma ve bölme 2'yi anlarlarsa. Bir grup X flash kart yapın, 1 - X olarak adlandırın ve karıştırın. İşte açıklama:

Tamam, burada (diyelim ki 20) kart destemiz var. Onları sıraya koymak istiyoruz, bu yüzden 1 önce, sonra 2, sonra 3, vb. İşte bunu yapmanın çok hızlı bir yolu.

İlk olarak, bu desteden geçelim ve iki kazık yapalım. 20'nin yarısı 10'dur, bu yüzden sağdaki bu kazıkta 10'dan büyük herhangi bir şey ve soldaki bu kazıkta daha küçük bir şey gider. (İlerlerken gösterdiğinizden emin olun.)

Şimdi aynı şeyi daha küçük yığınlarla yapalım. 10'un yarısı nedir? (Birisi "beş!" Der) Doğru! Yani sağdaki bu kazıkta 5'ten büyük olan herhangi bir şey, soldaki bu kazıkta daha küçük olan herhangi bir şey.

Ve burada, 10'dan büyük bir grubumuz var. 10'un yarısı 5 ve 10 artı 5 nedir? (Birisi "on beş!" Der) Doğru! Yani 15'ten büyük olan herhangi bir şey sağdaki bu yığına girer ve 15'ten küçük olan herhangi bir şey soldaki bu yığına girer.

Ve şimdi kazıklar kolayca bakabileceğiniz ve sıraya koyabileceğiniz kadar küçülüyor. Bak, işte burada 2, 4, 5, 3, 1. Onları bu şekilde değiştiriyoruz ve görebilirsiniz 1, 2, 3, 4, 5. Öyleyse aynı şeyi diğer kazıklarla yapalım ve sonra kazıkları sıraya koyduk ve bakıyoruz! 1'den 20'ye kadar sıradalar!

Tebrikler. Bir grup çocuğa uyarlanabilir bir çabuk sıralama algoritmasının temel prensiplerini öğrettiniz! Zihinsel olgunluğa bağlı olarak bundan biraz daha derine inebilirsiniz, ancak bu noktanın çok ötesine geçmek için resmi mantık anlayışı gerekir.

Karmaşıklığını kanıtlamaya gelince, bu daha zordur. Resmi mantık gerektiren şeylerden biridir ve ilk etapta big-O notasyonunun temel ilkelerini anlamak zorunda kalacaklardır. İlk başta o kısımdan uzak durmak isteyebilirsiniz.


Örneğinizin iyi olmadığını düşünmüyorum, çünkü aslında değerleri değil anahtarları sıralıyorsunuz ve sadece zaten 15'i sıralayarak pozisyonda ne olduğunu biliyorsunuz.
Thorbjørn Ravn Andersen

@ Thorbjørn: Anahtar / değer çiftleri hakkında kim bir şey söyledi? Bu temel kavramı açıklamak için basit bir tamsayı sıralamadır.
Mason Wheeler

Bir pivot öğesi kullanmadığınız için, açıkladığınız algoritma üzerinde düşünmek hızlı sıralama değildir.
Thorbjørn Ravn Andersen

1
@ ThorbjørnRavnAndersen: Elbette öyle; sadece hangi elemanların orada olduğunu bilmesi, böylece medyanı seçebilmesidir.
Raphael

@ Raphael ve dağıtımları. Kartlar herhangi bir değer ve renk olabilir ve sadece 1 ile 20 arasında sayıları olan bir çıkartmaya sahip olabilirler.
Thorbjørn Ravn Andersen

2

Buna ne dersin?

Bilgisayar Bilimi Bağlantısız - Sıralama Algoritmaları

Tüm sorularınızı kapsamıyor, ancak iyi bir başlangıç.

Bu konuyla ilgili daha fazla kaynak burada bağlantılıdır .

Onlar da (quicksort dahil) tasnif algoritmaları açıklayan mevcut bir video yaptı burada . Bu video gerçekten küçük çocuklar için farklı sıralama algoritmaları arasındaki farkı anlamaya yardımcı olur.


harika bir tane! Anlamak oldukça kolay.
Mayur Patil

1

Bu küçük demonun grafik güzelliğine bakın .

hızlı sıralama.


1
Bence bu çocuklar için çok soyut olabilir.
Raphael

3
Kendimi utandırmamak için, ama sonunda sınıfta hızlıca açıklanana kadar bu grafiği anlamadım.
Christian Mann

+ 1'iniz var çünkü soruyu okuduğumda başıma ilk gelen şey bu, ama ben görsel bir öğreniciyim.
Joshua Drake

3
Quicksort'un nasıl çalıştığını açıklamak gerçekten yanlış bir yoldur . Quicksort'u zaten biliyorsanız, bu animasyonun quicksort ile ilgili olduğunu onaylayabilirsiniz. Quicksort'u bilmiyorsanız, quicksort'un biraz sihir kullanan oldukça hızlı bir sıralama algoritması dışında hiçbir şey söylemez. Kitlenin kim olduğuna bağlı olarak, bu animasyonu göstererek izleyiciyi hızlı sıralama hakkında bilgi edinmeye teşvik edebilirsiniz, ancak nasıl çalıştığı hakkında önemli bir şey açıklamaz.
Tsuyoshi Ito

Animasyon oldukça güzel ama yeni başlayanlar için ilk fırsatta bir lisans için bile anlaşılabilir olmak çok uzak.
jonaprieto
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.