Giải SBT Tin học 11 Cánh diều Bài 8. Lập trình một số thuật toán sắp xếp có đáp án
24 người thi tuần này 4.6 494 lượt thi 6 câu hỏi
Bạn cần đăng ký gói VIP ( giá chỉ từ 250K ) để làm bài, xem đáp án và lời giải chi tiết không giới hạn.
Dành cho bạn Hot
Trắc nghiệm Hai đường thẳng song song lớp 11 (có đúng sai, trả lời ngắn)
Trắc nghiệm Mô tả sóng lớp 11 (có đáp án)
Trắc nghiệm Khái niệm về cân bằng hoá học lớp 11 (có đáp án - phần 1)
Đề cương ôn tập giữa kì 1 Tiếng Anh 11 Global Success có đáp án
15 câu Trắc nghiệm Sinh học 11 Kết nối tri thức Bài 8 có đáp án
25 câu Trắc nghiệm Lịch Sử 11 Kết nối tri thức Bài 1 có đáp án
15 câu Trắc nghiệm Tin học 11 Kết nối tri thức Bài 1 có đáp án
16 câu Trắc nghiệm Kinh tế pháp luật 11 Kết nối tri thức Bài 2 có đáp án
Danh sách câu hỏi:
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Số lượng nghịch thế đạt giá trị lớn nhất khi dãy 4 đã được sắp sẵn theo thứ tự giảm dần. Khi đó, số lượng nghịch thế của A là:

Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Em có thể sắp xếp theo thứ tự dãy 4 rồi thực hiện phép duyệt từ trái sang phải để “lướt” qua các đoạn phần tử bằng nhau:

Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Chương trình mẫu:

Ghi chú: Các thao tác được lưu vào một danh sách. Mỗi phần tử của danh sách là một tuple (khai báo bởi ( ) ). Tuple khá giống danh sách, nhưng các phần tử của nó không thể thay đổi giá trị.
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Vì thứ tự từ điển của hai xâu không phụ thuộc vào chữ hoa/thường, mà vị trí của chữ hoa/thường trên bảng ASCII lại khác nhau, nên khi so sánh em đưa tất cả về chỉ chữ hoa hoặc chỉ chữ thường để so sánh.
Để đưa tất cả kí tự của xâu S bất kì thành chữ hoa, ta dùng S.upper(). Ngược lại, để đưa về chữ thường, ta dùng S.lower ().


Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Để so sánh thứ tự từ điển của các xâu tiếng Việt, em không thể dùng các
phép toán so sánh “<, >, ...” như bình thường, vì trên bảng mã Unicode, các kí tự có dấu sẽ đứng sau 26 kí tự Latinh không dấu trong bảng ASCII. Vì vậy, em sẽ sử dụng thư viện locale là một thư viện chuyên dùng để xử quy chuẩn của các ngôn ngữ.
Em khai báo thư viện locale, sau đó khai báo sử dụng ngôn ngữ tiếng Việt bằng câu lệnh: locale.setlocale(locale.LC_ALL, "vi_VN"). Thư viện này cho phép ta dùng hai hàm như sau:
• locale.strcoll(s1, s2) : so sánh hai xâu và trả về:
– Một số âm nếu s1 đứng trước s2.
- Số 0, nếu s1 giống hệt s2.
– Một số dương nếu s2 đứng trước s1.
locale.strxfrm(s): chuyển đổi một xâu s thành một con số để thuận tiện cho việc so sánh thứ tự.
Câu lệnh locale.strcoll(s1, s2)có thể được viết thành biểu thức locale.strxfrm (s1) < locale.strxfrm (s2).
Trong bài này, đầu tiên em khai báo nhập xuất tệp (phải để mã hoá bằng UTF-8) và sử dụng thư viện locale với ngôn ngữ là tiếng Việt (mã vi_VN hoặc vi). Sau đó, em tạo mảng các xâu s rồi nhập n, tiếp theo em lần lượt nhập n dòng rồi cho vào mảng s. Cuối cùng, em sắp xếp mảng s sau cho strxfrm ( ) của các xâu trong mảng s theo chiều hướng tăng dần (có thể dùng hàm sort với cú pháp như ở dưới) và in ra kết quả.
Chương trình mẫu:
import sys
sys.stdin = open("danhsach.txt", "r", encoding="utf8") sys.stdout open ("Tudien.txt", "w", encoding="utf8") import locale
locale.setlocale (locale. LC ALL, "vi_VN")
n=int (input())
s=[]for i in range (n):
s.append(input())
s.sort (key=locale.strxfrm) for x in s:
print (x)
Đăng nhập để xem lời giải
Lưu tiến độ và luyện tập hiệu quả hơn. Hoàn toàn miễn phí!
Lời giải
Khai báo thư viện locale, sau đó khai báo sử dụng ngôn ngữ tiếng Việt bằng câu lệnh: locale.setlocale(locale.LC_ALL, "vi_VN"). Để so sánh hai xâu, sử dụng hàm locale.strcoll(s1, s2) . Hàm sẽ trả về một số âm nếu xâu s1 đứng trước xâu s2, số 0 khi hai xâu bằng nhau và số dương nếu xâu s2 đứng trước xâu s1.
Đầu tiên, em nhập toàn bộ danh sách học sinh các lớp và gom hết vào một mảng. Sau đó, em tiến hành sắp xếp nổi bọt nhưng việc so sánh sẽ phức tạp hơn: so sánh phần tên trước, nếu phần tên bằng nhau sẽ so sánh phần họ. Tiếp theo, em lần lượt đưa học sinh vào các phòng thi. Em tạo hai danh sách, một mảng allRoom dùng để chứa toàn bộ danh sách thí sinh từng phòng thi và một danh sách currentRoom dùng để lưu thông tin thí sinh của phòng thi hiện tại đang xếp. Khi phòng currentRoom xếp đủ m người, em đẩy toàn bộ phòng thi đã xếp xong này vào trong allRoom, sau đó xoá currentRoom để bắt đầu xếp phòng khác.
Cuối cùng, em in ra như đề bài.

Đăng ký để học cùng Vietjack. Hoàn toàn miễn phí!
Bằng việc đăng ký, bạn đồng ý với Điều khoản sử dụng và Chính sách bảo mật của Vietjack.




