(Trang 104)
SAU BÀI HỌC NÀY EM SẼ:
- Áp dụng được thuật toán sắp xếp trong một vài bài toán cụ thể.
7 Trong Bài 21, em đã được học cách triển khai thuật toán sắp xếp để sắp xếp các phần tử trong danh sách theo thứ tự tăng dần. Nếu cần sắp xếp theo thứ tự ngược lại thì câu lệnh so sánh tương ứng trong vòng lặp sẽ cần thay đổi như thế nào?
Nhiệm vụ 1
Cho danh sách số lượng mỗi mặt hàng trong kho của một cửa hàng. Người quản lí kho cần xem các mặt hàng theo thứ tự số lượng tăng dần. Em hãy viết chương trình sắp xếp các mặt hàng trong kho theo thứ tự số lượng tăng dần, sử dụng thuật toán sắp xếp chèn, sau đó in ra màn hình dãy số vừa sắp xếp. Danh sách số lượng các mặt hàng được đọc từ tệp văn bản kho.inp, mỗi dòng bao gồm số lượng một mặt hàng.
Hướng dẫn:
Phân tích:
kho.inp |
5 3 10 4 8 2 |
Chúng ta có thể sử dụng thuật toán sắp xếp chèn đã học ở bài học trước để sắp xếp các phần tử trong danh sách số lượng mặt hàng theo thứ tự tăng dần. Bài toán này bao gồm các bước sau: Đầu tiên, chúng ta đọc số lượng các mặt hàng trong kho từ tệp văn bản; Sau đó sử dụng thuật toán sắp xếp chèn để sắp xếp số lượng các mặt hàng; Cuối cùng là in số lượng các mặt hàng đã sắp xếp ra màn hình.
quanlykho.py
1 def Insertion Sort (A):
2 n = len(A)
3 for i in range(1,n):
4 value = A[i]
5 j = 1-1
6 while j >= 0 and A[j] > value:
7 A[j+1] = A[j]
8 jj-1
9 A[j+1] = value
10 input_file open("kho.inp", encoding="utf8")
11 quantity_ds = []
12 for line in input_file.readlines():
13 quantity_ds.append(int(line))
14 InsertionSort(solution_ds)
15 print('Số lượng các mặt hàng trong kho theo thứ tự tăng dần là:')
16 for i in range(len(soluong_ds)):
17 print(quantity_ds[i])
Đọc số lượng các mặt hàng trong tệp và đưa vào danh sách soluong_ds
(Trang 105)
Nhiệm vụ 2
Cho danh sách điểm trung bình môn Tin học của các học sinh. Em hãy sử dụng thuật toán sắp xếp chọn để sắp xếp danh sách này theo thứ tự điểm trung bình giảm dần, sau đó in danh sách đã sắp xếp ra màn hình. Danh sách điểm trung bình được đọc từ tệp văn bản diem.inp, mỗi dòng bao gồm điểm trung bình của một học sinh.
Hướng dẫn:
Phân tích:
Chúng ta có thể sử dụng thuật toán sắp xếp chọn đã học ở bài học trước để sắp xếp danh sách điểm số. Chú ý đề bài yêu cầu sắp xếp danh sách theo thứ tự điềm trung bình giảm dần. Do đó ở mỗi vòng lặp của thuật toán sắp xếp chọn, chúng ta phải tìm kiếm phần tử có giá trị cao nhất, thay vì tìm phần tử có giá trị bé nhất. Bài toán này bao gồm các bước sau: Đầu tiên, chúng ta đọc điểm trung bình từ tệp văn bản diem.inp; Sau đó sử dụng thuật toán sắp xếp chọn đã học ở bài trước để sắp xếp điểm trung bình theo thứ tự giảm dần; Cuối cùng là in danh sách điểm trung bình đã sắp xếp ra màn hình.
diem.inp 7,8 5,6 8,9 7.4 9,5 8,4 9.1 |
sapxepdiem.py
1 def SelectionSort(A):
2 n = len(A)
3 for i in range(n-1):
4 iMax = i
5 for j in range(i+1,n):
6 if A[j] > A[iMax]:
7 iMax = j
8 A[i], A[iMax] = A[iMax], A[i]
9 input_file = open("diem.inp", encoding="utf8")
10 points = []
11 for line in input_file.readlines 12 diem_ds.append(float(line)) ():
12 diem_ds.append(float(dòng))
13 SelectionSort(diem_ds)
14 print('Danh sách điểm theo thứ tự giảm dần là:')
15 for i in range(len(diem_ds)):
16 print(diem_ds [i])
LUYỆN TẬP
1. Sử dụng thuật toán sắp xếp chọn viết lại chương trình trong Nhiệm vụ 1.
2. Sử dụng thuật toán sắp xếp nổi bọt viết lại chương trình trong Nhiệm vụ 2.
VẬN DỤNG
Một người đi mua hàng với danh sách các mặt hàng cần mua, đơn giá từng mặt hàng và số lượng hàng cần mua được lưu trong tệp văn bản muahang.inp.
Hãy sử dụng thuật toán nồi bọt để sắp xếp các mặt hàng theo thứ tự thành tiền của các mặt hàng tăng dần rồi in ra tên các mặt hàng và thành tiền tương ứng.
Bình Luận
Để Lại Bình Luận Của Bạn