Quicksort giải thích cho trẻ em


16

Năm ngoái, tôi đã đọc một bài báo tuyệt vời về Cơ học Lượng tử cho Kindergarden . Đó không phải là giấy dễ dàng.

Bây giờ, tôi tự hỏi làm thế nào để giải thích quicksort bằng những từ đơn giản nhất có thể. Làm thế nào tôi có thể chứng minh (hoặc ít nhất là rửa tay) rằng độ phức tạp trung bình là , và trường hợp tốt nhất và tồi tệ nhất là gì đối với lớp mẫu giáo? Hoặc ít nhất là ở trường tiểu học?O(nlogn)


9
Bạn muốn chứng minh sự phức tạp của quicksort ... với một đám trẻ ba tuổi ...? Chúc may mắn.

2
Hãy thử sử dụng ngôn ngữ của họ, vấn đề là nó rất hạn chế và về mặt sinh học, họ chưa sẵn sàng cho sự phức tạp này. Các bước sau như trong một thuật toán không được phát triển đầy đủ cho đến khi chúng được sáu hoặc bảy tuổi. Bạn đang đối mặt với một thách thức sinh học.

4
Tôi thực sự sẽ không đề xuất nó cho Mẫu giáo, nhưng tìm kiếm youtube cho quicksort (và các thuật toán sắp xếp khác) cung cấp nhiều đại diện tốt. Cá nhân tôi thích những điệu nhảy dân gian Hugarian. Xem youtube.com/watch?v=ywWBy6J5gz8 .

2
Bài báo mà bạn nói đến có một tiêu đề hấp dẫn nhưng nội dung rất phức tạp như Mô hình không gian Hilbert, vậy bạn thực sự là gì?

2
Tôi sẽ từ bỏ việc cố gắng giải thích đầy đủ quicksort, và thay vào đó cố gắng cung cấp cho bọn trẻ một sự hiểu biết về "chia rẽ và chinh phục". Ngay cả khi chúng không đủ tuổi để hoàn toàn thu hồi đệ quy, ý tưởng phá vỡ một vấn đề lớn thành các vấn đề nhỏ hơn sẽ thực sự có giá trị. Cá nhân tôi sẽ có một sự hiểu biết cơ bản vững chắc về sự phân chia và chinh phục bất cứ ngày nào qua một khái niệm không đầy đủ về các thuật toán phức tạp.
Vincent Gable

Câu trả lời:


14

Tại cốt lõi của nó, Quicksort là thế này:

  1. Lấy mục đầu tiên.
  2. Di chuyển mọi thứ ít hơn mục đầu tiên sang bên trái của nó, mọi thứ lớn hơn ở bên phải (giả sử thứ tự tăng dần).
  3. Tái diễn ở mỗi bên.

Tôi nghĩ rằng mỗi đứa trẻ 4 tuổi trên hành tinh có thể làm 1 và 2. Việc đệ quy có thể giải thích thêm một chút, nhưng không nên làm khó chúng.

  1. Lặp lại ở phía bên trái, bỏ qua bên phải bây giờ (nhưng hãy nhớ vị trí ở giữa)
  2. Tiếp tục lặp lại với các bên trái cho đến khi bạn không nhận được gì. Bây giờ quay trở lại phía bên phải cuối cùng mà bạn bỏ qua và lặp lại quá trình ở đó.
  3. Khi bạn hết bên phải và bên trái, bạn đã hoàn thành.

Đối với sự phức tạp, trường hợp xấu nhất nên khá dễ dàng. Chỉ cần xem xét một mảng đã được sắp xếp:

1 2 3 4
  2 3 4
    3 4
      4

Khá dễ dàng để thấy (và chứng minh) rằng đó là .12n2

Tôi không quen thuộc với bằng chứng trường hợp trung bình, vì vậy tôi thực sự không thể đưa ra gợi ý cho điều đó. Bạn có thể nói rằng trong một mảng dài chưa được sắp xếp xác suất chọn mục nhỏ nhất hoặc lớn nhất là 2l , vậy ...?2n


Có lẽ (d & c) đệ quy là tốt nhất và được giải thích một cách tự nhiên nhất với sự song song vốn có.
Raphael

2
Tôi sẽ đồng ý. Bản năng của tôi là sử dụng một phép ẩn dụ đưa hai cọc cho bạn bè của bạn để làm việc.
Christian Mann

3
Tôi cho rằng trẻ bốn tuổi (về các trường hợp ngoại lệ có thể) về cơ bản không thể nắm bắt được đệ quy, bất kể bạn có cố gắng thế nào. Bộ não đơn giản là không đủ trưởng thành. Có những giai đoạn được xác định rõ ràng trong sự phát triển trí não, ví dụ như điểm trẻ em tự nhận thức được, nơi chúng nhận thức được hậu quả trong tương lai của các hành động hiện tại và nơi đầu tiên chúng hiểu được sự châm biếm theo một lịch trình được kiểm soát chặt chẽ mà không thể sắp xếp lại một cách có chủ ý và được bảo tồn cao trên trẻ em. Tôi tin rằng sự hiểu đệ quy rơi vào cùng loại.
Konrad Rudolph

16

Quicksort thực sự khá dễ hiểu, nếu họ hiểu cách đếm và chia cơ bản cho 2. Tạo một loạt thẻ flash X, đánh số chúng 1 - X và xáo trộn nó. Sau đây là lời giải thích:

OK, chúng tôi đã có bộ bài (giả sử 20) thẻ ở đây. Chúng tôi muốn sắp xếp chúng theo thứ tự, vì vậy 1 là đầu tiên, sau đó là 2, sau đó là 3, v.v. Đây là một cách rất nhanh để làm điều đó.

Đầu tiên, chúng ta hãy đi qua bộ bài này và tạo ra hai đống từ nó. Một nửa số 20 là 10, vì vậy, bất cứ thứ gì lớn hơn 10 đều nằm trong đống này ở bên phải và bất cứ thứ gì nhỏ hơn đều nằm trong đống này ở bên trái. (Hãy chắc chắn để chứng minh khi bạn đi.)

Bây giờ, hãy làm điều tương tự với các cọc nhỏ hơn. Một nửa của 10 là gì? (Ai đó nói "năm!") Đúng vậy! Vì vậy, bất cứ điều gì lớn hơn 5 đi trong đống này ở bên phải, và bất cứ điều gì nhỏ hơn đi trong đống này ở bên trái.

Và ở đây, chúng ta đã có một nhóm lớn hơn 10. Vậy một nửa của 10 là 5, và 10 cộng 5 là gì? (Ai đó nói "mười lăm!") Đúng vậy! Vì vậy, bất cứ điều gì lớn hơn 15 đi trong đống này ở bên phải, và bất cứ điều gì nhỏ hơn 15 đi trong đống này ở bên trái.

Và bây giờ các cọc đang trở nên đủ nhỏ để bạn có thể dễ dàng nhìn vào chúng và sắp xếp chúng theo thứ tự. Hãy nhìn xem, ở đây chúng ta đã có 2, 4, 5, 3, 1. Vì vậy, chúng tôi chỉ cần chuyển đổi chúng như thế này, và bạn có thể thấy 1, 2, 3, 4, 5. Vì vậy, hãy làm điều tương tự với các cọc khác, và sau đó chúng ta chỉ cần đặt các cọc theo thứ tự, và nhìn! Họ theo thứ tự từ 1 đến 20!

Xin chúc mừng. Bạn vừa dạy cho một đám trẻ những nguyên tắc cơ bản của thuật toán quicksort thích ứng! Bạn có thể đi sâu hơn một chút tùy thuộc vào sự trưởng thành về tinh thần, nhưng đi xa hơn điểm này đòi hỏi một số hiểu biết về logic hình thức.

Đối với việc chứng minh sự phức tạp của nó, đó là khó khăn hơn. Đó là một trong những điều đòi hỏi logic chính thức và họ sẽ phải hiểu các nguyên tắc cơ bản của ký hiệu big-O ngay từ đầu. Bạn có thể muốn giữ phần đó lúc đầu.


Tôi không nghĩ rằng ví dụ của bạn không tốt vì về cơ bản bạn sắp xếp các khóa, không phải giá trị và bạn chỉ có thể biết những gì ở vị trí 15 bằng cách đã sắp xếp.
Thorbjørn Ravn Andersen

@ Thorbjørn: Ai nói gì về cặp khóa / giá trị? Đây là một loại số nguyên đơn giản để giải thích các khái niệm cơ bản.
Mason Wheeler

Nghĩ về thuật toán mà bạn mô tả không phải là quicksort, vì bạn không sử dụng phần tử trụ.
Thorbjørn Ravn Andersen

1
@ ThorbjørnRavnAndersen: Tất nhiên là anh ấy làm; chỉ là anh ta biết những yếu tố nào ở đó nên có thể chọn trung vị.
Raphael

@Raphael và phân phối của họ. Các thẻ có thể là bất kỳ giá trị và màu sắc nào và chỉ có một nhãn dán có số từ 1 đến 20. Do đó, tôi tham khảo khóa / chỉ mục chứ không phải giá trị.
Thorbjørn Ravn Andersen

2

Còn cái này thì sao?

Khoa học máy tính Unplugged - Thuật toán sắp xếp

Nó không hoàn toàn bao gồm tất cả các câu hỏi của bạn, nhưng đó là một khởi đầu tốt.

Nhiều tài nguyên về chủ đề này được liên kết ở đây .

Họ cũng đã tạo một video có sẵn để giải thích các thuật toán sắp xếp (bao gồm quicksort) ở đây . Video này thực sự giúp hiểu được sự khác biệt giữa các thuật toán sắp xếp khác nhau cho trẻ nhỏ.


một người tuyệt vời ! Khá dễ hiểu.
Mayur Patil

1

Xem sự đáng yêu đồ họa của bản demo nhỏ này .

sắp xếp nhanh chóng.


1
Tôi nghĩ rằng nó có thể là quá trừu tượng cho trẻ em.
Raphael

3
Không làm xấu hổ bản thân, nhưng tôi đã không hiểu đồ họa đó cho đến khi cuối cùng tôi được giải thích về quicksort trong lớp.
Christian Mann

Có +1 vì đây là điều đầu tiên xảy ra với tôi khi tôi đọc câu hỏi, nhưng sau đó tôi là người học trực quan.
Joshua Drake

3
Đây thực sự là một cách sai để giải thích cách hoạt động của quicksort . Nếu bạn đã biết quicksort, bạn có thể xác nhận rằng hình ảnh động này là về quicksort. Nếu bạn không biết quicksort, thì nó chẳng nói gì ngoại trừ quicksort là một thuật toán sắp xếp khá nhanh, sử dụng một số phép thuật. Tùy thuộc vào đối tượng là ai, bạn có thể thúc đẩy khán giả tìm hiểu về quicksort bằng cách hiển thị hoạt hình này, nhưng nó không giải thích bất cứ điều gì quan trọng về cách thức hoạt động của nó.
Tsuyoshi Ito

Hoạt hình là khá đẹp nhưng cho đến nay là dễ hiểu đối với người mới bắt đầu ngay cả đối với một sinh viên ở cơ hội đầu tiên.
jonaprieto
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.