btvn.vn
Tìm kiếm Đăng nhập

Đổi thuật toán nhưng giữ đúng chiều sắp xếp

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Hai phép thay từ bài trước

Giữ hai tệp giả và chương trình ở L23–L24. Với `kho_b22.py`, dùng **sắp chọn tăng** ở L19 thay sắp chèn tăng; vẫn phải in `[1, 3, 5, 7]`. Với `diem_b22.py`, dùng **nổi bọt giảm** ở L22 thay sắp chọn giảm; vẫn phải in `[9.0, 9.0, 7.0, 6.5]`. Mục tiêu là thấy cùng yêu cầu đầu ra có thể giải bằng các thuật toán khác nhau, chứ không đổi cả dữ liệu hay chiều sắp.

Thay hàm, chạy lại, so kết quả

Trong `kho_b22.py`, thay định nghĩa hàm cũ bằng định nghĩa `sap_chon_tang` ở L19 và thay lời gọi thành `sap_chon_tang(so_luong)`. Không thay phần đọc tệp hay `print(so_luong)`. Trong `diem_b22.py`, thay hàm cũ bằng `sap_noi_bot_giam` ở L22 và gọi `sap_noi_bot_giam(diem)`; giữ phần đọc tệp. Chạy lần lượt hai tệp mã rồi so với hai đầu ra dự kiến ở trên. Nếu báo `NameError`, kiểm đã chép định nghĩa hàm vào cùng tệp và tên gọi viết đúng. Nếu kết quả bị đảo chiều, kiểm dấu `<`/`>` trong hàm mới, không sửa điểm hoặc số lượng để “khớp” kết quả.

Đầu ra là điều kiện cần giữ

Sắp chọn tăng tìm số **nhỏ nhất** của đoạn còn lại, trong khi nổi bọt giảm đổi cặp khi số bên trái **nhỏ hơn** số bên phải. Cả hai khác hàm ở nhiệm vụ gốc, nhưng thứ tự đầu ra vẫn đúng. Bài này không kết luận thuật toán nào nhanh hơn từ một tệp bốn dòng; thời gian chạy cần được đánh giá với dữ liệu và cách đo phù hợp.

Bài luyện

Đổi bài kho từ sắp chèn tăng sang sắp chọn tăng, kết quả đúng phải là gì?
Chọn một đáp án

Bài luyện

Khi đổi bài điểm sang nổi bọt giảm, cặp kề `[7.0,9.0]` phải được xử lí thế nào?
Chọn một đáp án

Bài luyện

Nếu chương trình báo `NameError: name sap_chon_tang is not defined` sau khi đổi lời gọi, cần kiểm gì?
Chọn một đáp án

Đang học