Môn Tin họcQuản lý học tập Tin học

Tìm và sửa lỗi chương trình xếp hạng vận động viên chạy 100m

Lớp 11Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 5 test case chấm tự động · 4 tiêu chí chấm

Trong giải điền kinh của trường, ban tổ chức ghi lại thời gian chạy 100m (đơn vị: giây, có thể là số thập phân) của từng vận động viên. Cần sắp xếp các thời gian này theo thứ tự tăng dần (thời gian nhỏ nhất xếp hạng nhất) để công bố kết quả.

Bạn Nam đã cài đặt thuật toán sắp xếp nổi bọt (Bubble Sort) như sau, nhưng khi chạy với dãy có từ 2 phần tử trở lên thì chương trình báo lỗi list index out of range:

  • def BubbleSort(A):
  •     n = len(A)
  •     for i in range(n - 1):
  •         for j in range(n - i):
  •             if A[j] > A[j + 1]:
  •                 A[j], A[j + 1] = A[j + 1], A[j]

Em hãy tìm ra chỗ sai trong dòng lệnh vòng lặp trong (gợi ý: so sánh với công thức chuẩn đã học trong bài — vòng lặp trong chỉ cần chạy đến chỉ số n - 1 - i), sửa lại cho đúng, rồi viết hoàn chỉnh chương trình: đọc số lượng vận động viên và dãy thời gian chạy, sắp xếp tăng dần và in kết quả ra màn hình.

Định dạng input: dòng đầu là số nguyên n (số vận động viên); dòng thứ hai gồm n số thực cách nhau bởi dấu cách (thời gian chạy, giây).

Định dạng output: in ra một dòng gồm n số đã sắp xếp tăng dần, cách nhau bởi dấu cách.

InputOutput
5
12.5 11.8 13.2 10.9 12.0
10.9 11.8 12.0 12.5 13.2
3
9.9 9.1 9.5
9.1 9.5 9.9
#bubble sort#off-by-one#sửa lỗi chương trình#vòng lặp lồng nhau#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài