Giải bài 22: Thực hành bài toán sắp xếp | Tin học 11 Kết nối tri thức

Tin học 11 Kết nối tri thức bài 22: Thực hành bài toán sắp xếp được sưu tầm và xin gửi tới bạn đọc cùng tham khảo. Mời các bạn cùng theo dõi để có thêm tài liệu giải SGK Tin học 11 Kết nối tri thức nhé.

Luyện tập
Câu hỏi 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.
Bài làm
def selection_sort(arr):
for i in range(len(arr) - 1):
min_idx = i
for j in range(i + 1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
# Đọc dữ liệu từ file kho.inp
with open('kho.inp', 'r') as file:
lines = file.readlines()
quantities = [int(line.strip()) for line in lines]
# Sắp xếp danh sách số lượng các mặt hàng theo thứ tự tăng dần
selection_sort(quantities)
# In danh sách số lượng các mặt hàng đã được sắp xếp ra màn hình
print("Danh sách số lượng các mặt hàng sau khi sắp xếp:")
for quantity in quantities:
print(quantity)
Câu hỏi 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.
Bài làm
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(0, n - i - 1):
if arr[j] < arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# Đọc dữ liệu từ file diem.inp
with open('diem.inp', 'r') as file:
lines = file.readlines()
scores = [float(line.strip()) for line in lines]
# Sắp xếp danh sách điểm trung bình giảm dần
bubble_sort(scores)
# In danh sách điểm trung bình đã được sắp xếp ra màn hình
print("Danh sách điểm trung bình giảm dần:")
for score in scores:
print(score)
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ài làm
# Đọc dữ liệu từ file muahang.inp
with open('muahang.inp', 'r') as file:
lines = file.readlines()
mat_hangs = []
for line in lines:
data = line.strip().split(',')
ten = data[0]
don_gia = float(data[1])
so_luong = int(data[2])
thanh_tien = don_gia * so_luong
mat_hangs.append((ten, thanh_tien))
# Sắp xếp danh sách các mặt hàng theo thứ tự thành tiền tăng dần
n = len(mat_hangs)
for i in range(n - 1):
for j in range(0, n - i - 1):
if mat_hangs[j][1] > mat_hangs[j + 1][1]:
mat_hangs[j], mat_hangs[j + 1] = mat_hangs[j + 1], mat_hangs[j]
# In danh sách các mặt hàng và thành tiền tương ứng ra màn hình
print("Danh sách các mặt hàng và thành tiền tương ứng:")
for mat_hang in mat_hangs:
print("Tên mặt hàng: ", mat_hang[0])
print("Thành tiền: ", mat_hang[1])
print("-----")
------------------------------------------------
| 1/4

Preview text:

Luyện tập

Câu hỏi 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.

Bài làm

def selection_sort(arr):

for i in range(len(arr) - 1):

min_idx = i

for j in range(i + 1, len(arr)):

if arr[j] < arr[min_idx]:

min_idx = j

arr[i], arr[min_idx] = arr[min_idx], arr[i]

# Đọc dữ liệu từ file kho.inp

with open('kho.inp', 'r') as file:

lines = file.readlines()

quantities = [int(line.strip()) for line in lines]

# Sắp xếp danh sách số lượng các mặt hàng theo thứ tự tăng dần

selection_sort(quantities)

# In danh sách số lượng các mặt hàng đã được sắp xếp ra màn hình

print("Danh sách số lượng các mặt hàng sau khi sắp xếp:")

for quantity in quantities:

print(quantity)

Câu hỏi 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.

Bài làm

def bubble_sort(arr):

n = len(arr)

for i in range(n - 1):

for j in range(0, n - i - 1):

if arr[j] < arr[j + 1]:

arr[j], arr[j + 1] = arr[j + 1], arr[j]

# Đọc dữ liệu từ file diem.inp

with open('diem.inp', 'r') as file:

lines = file.readlines()

scores = [float(line.strip()) for line in lines]

# Sắp xếp danh sách điểm trung bình giảm dần

bubble_sort(scores)

# In danh sách điểm trung bình đã được sắp xếp ra màn hình

print("Danh sách điểm trung bình giảm dần:")

for score in scores:

print(score)

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ài làm

# Đọc dữ liệu từ file muahang.inp

with open('muahang.inp', 'r') as file:

lines = file.readlines()

mat_hangs = []

for line in lines:

data = line.strip().split(',')

ten = data[0]

don_gia = float(data[1])

so_luong = int(data[2])

thanh_tien = don_gia * so_luong

mat_hangs.append((ten, thanh_tien))

# Sắp xếp danh sách các mặt hàng theo thứ tự thành tiền tăng dần

n = len(mat_hangs)

for i in range(n - 1):

for j in range(0, n - i - 1):

if mat_hangs[j][1] > mat_hangs[j + 1][1]:

mat_hangs[j], mat_hangs[j + 1] = mat_hangs[j + 1], mat_hangs[j]

# In danh sách các mặt hàng và thành tiền tương ứng ra màn hình

print("Danh sách các mặt hàng và thành tiền tương ứng:")

for mat_hang in mat_hangs:

print("Tên mặt hàng: ", mat_hang[0])

print("Thành tiền: ", mat_hang[1])

print("-----")

------------------------------------------------