Sắp xếp nổi bọt (Bubble Sort) – Minh họa trong Python và Scratch

Sắp xếp nổi bọt (Bubble Sort) – Minh họa trong Python và Scratch

Sắp xếp nổi bọt (Bubble Sort) là gì?

Sắp xếp nổi bọt là một thuật toán sắp xếp đơn giản nhưng hiệu quả. Ý tưởng của thuật toán này là so sánh các cặp phần tử liền kề trong danh sách và hoán đổi chúng nếu chúng không theo thứ tự mong muốn. Quá trình này lặp lại cho đến khi danh sách được sắp xếp hoàn toàn.

Để hiểu cách thuật toán hoạt động, hãy xem xét một ví dụ. Giả sử chúng ta có một danh sách số nguyên không được sắp xếp như sau: [5, 2, 8, 3, 1] . Chúng ta sẽ sử dụng thuật toán sắp xếp nổi bọt để sắp xếp danh sách này theo thứ tự tăng dần.

Bước 1: Duyệt qua danh sách và so sánh các cặp phần tử liền kề. Trong ví dụ này, chúng ta bắt đầu với [5, 2, 8, 3, 1] . Ta so sánh các cặp phần tử liền kề như sau:

  • So sánh (5, 2): Vì 5 lớn hơn 2, nên hoán đổi chúng. Danh sách trở thành [2, 5, 8, 3, 1] .
  • So sánh (5, 8): Không cần hoán đổi vì chúng đã theo thứ tự.
  • So sánh (8, 3): Vì 8 lớn hơn 3, nên hoán đổi chúng. Danh sách trở thành [2, 5, 3, 8, 1] .
  • So sánh (8, 1): Vì 8 lớn hơn 1, nên hoán đổi chúng. Danh sách trở thành [2, 5, 3, 1, 8] .
Read:   Đề cương HKII Toán 9 THCS Nguyễn Trường Tộ – Năm học 2022 – 2023

Bước 2: Tiếp tục duyệt qua danh sách và lặp lại quá trình so sánh và hoán đổi. Danh sách sẽ trở thành [2, 3, 1, 5, 8] .

Bước 3: Tiếp tục duyệt qua danh sách và lặp lại quá trình so sánh và hoán đổi. Danh sách sẽ trở thành [2, 1, 3, 5, 8] .

Bước 4: Tiếp tục duyệt qua danh sách và lặp lại quá trình so sánh và hoán đổi. Danh sách sẽ trở thành [1, 2, 3, 5, 8] .

Khi không có hoán đổi nào xảy ra trong quá trình duyệt qua danh sách, ta có thể kết luận rằng danh sách đã được sắp xếp hoàn toàn. Kết quả cuối cùng là danh sách [1, 2, 3, 5, 8] , theo thứ tự tăng dần.

Thuật toán sắp xếp nổi bọt hoạt động bằng cách đưa các phần tử nhỏ hơn dần lên trên, tương tự như khi các bong bóng nhỏ trong một cốc chất lỏng nổi lên trên. Cứ như vậy, các phần tử lớn hơn sẽ “nổi lên” và đứng ở đúng vị trí của chúng.

Minh họa sắp xếp nổi bọt (Bubble Sort) bằng Python:























def bubble_sort(arr):
    n = len(arr)
    
    for i in range(n):
        # Duyệt qua từng cặp phần tử liên tiếp
        # và hoán đổi chúng nếu chúng không theo thứ tự
        for j in range(n - i - 1):
            if arr[j]  > arr[j + 1] 
:
                arr[j] , arr[j + 1]  = arr[j + 1] , arr[j] 





    
    return arr

# Ví dụ sử dụng
arr = [64, 34, 25, 12, 22, 11, 90] 


sorted_arr = bubble_sort(arr)
print("Danh sách đã sắp xếp:", sorted_arr)

Kết quả:Danh sách đã sắp xếp: [11, 12, 22, 25, 34, 64, 90]

Read:   Lập trình vẽ tam giác đều trong Scratch và Python

Trong ví dụ trên, chúng ta triển khai hàm bubble_sort để sắp xếp một danh sách (arr). Trong vòng lặp bên ngoài, chúng ta duyệt qua từng phần tử và trong vòng lặp bên trong, chúng ta so sánh các cặp phần tử liên tiếp và hoán đổi chúng nếu chúng không theo thứ tự. Quá trình này được lặp lại cho đến khi danh sách được sắp xếp hoàn toàn. Kết quả cuối cùng là danh sách đã sắp xếp.

Thuật toán sắp xếp nổi bọt (Bubble Sort) trong Scratch:

Dưới đây là một ví dụ về cách triển khai thuật toán sắp xếp nổi bọt (Bubble Sort) bằng Scratch, một môi trường lập trình trực quan dành cho trẻ em:

  1. Tạo một danh sách các số cần sắp xếp. Trong ví dụ này, chúng ta sử dụng một danh sách gồm các số nguyên từ 0 đến 9 thứ tự lung tung
  2. Tạo một biến length và đặt giá trị bằng độ dài của danh sách.
  3. Tạo một biến swapped và đặt giá trị ban đầu là True để bắt đầu vòng lặp.
  4. Tạo một vòng lặp chạy cho đến khi swappedFalse. Trong mỗi vòng lặp, ta sẽ thiết lập swapped thành False và thực hiện sắp xếp.
  5. Trong vòng lặp, duyệt qua từng cặp phần tử liên tiếp trong danh sách.
    • So sánh hai phần tử và nếu phần tử sau lớn hơn phần tử trước, thực hiện hoán đổi vị trí của chúng và đặt swapped thành True.
  6. Đặt swapped thành True nếu có bất kỳ hoán đổi nào xảy ra trong vòng lặp.
  7. Khi vòng lặp kết thúc và không có hoán đổi nào xảy ra, ta có thể kết luận rằng danh sách đã được sắp xếp.
  8. In danh sách đã sắp xếp.
Read:   Lập trình kiểm tra số nguyên tố trong Python và C++

Trong ví dụ trên, danh sách sẽ được hiển thị trước và sau khi sắp xếp. Mỗi số được đại diện bằng một hình tròn và các số đã sắp xếp sẽ được di chuyển lên trên. Khi không có hoán đổi nào xảy ra nữa, thuật toán dừng lại và kết quả cuối cùng được hiển thị.

Lưu ý rằng việc triển khai thuật toán sắp xếp nổi bọt trong Scratch có thể đòi hỏi sự tương tác với các khối lệnh, và hình ảnh minh họa chỉ mang tính chất đại diện cho cách thuật toán hoạt động chứ không phải là một chương trình Scratch hoàn chỉnh.

Hình đại diện của người dùng

admin

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *