Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt
Vận dụng 2 trang 110 Tin học 11: Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt mà em đã biết. Cho biết thời gian thực tế thực hiện các chương trình trên với bộ dữ liệu đầu vào là dãy A = {3, 1, 0, 10, 13, 16, 9,7, 5, T1]
Lời giải:
*Thuật toán sắp xếp chèn (Insertion Sort):
import time
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp chèn
insertion_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là 0 giây
*Thuật toán sắp xếp chọn:
import time
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp chọn
selection_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là: 0 giây
*Thuật toán sắp xếp nổi bọt:
import time
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp nổi bọt
bubble_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là: 0 giây
Lời giải bài tập Tin học 11 Bài 23: Kiểm thử và đánh giá chương trình hay khác:
Xem thêm lời giải bài tập Tin học lớp 11 Kết nối tri thức hay nhất, ngắn gọn khác:
Tin học 11 Bài 24: Đánh giá độ phức tạp thời gian thuật toán
Tin học 11 Bài 25: Thực hành xác định độ phức tạp thời gian thuật toán
Tin học 11 Bài 26: Phương pháp làm mịn dần trong thiết kế chương trình
Tin học 11 Bài 27: Thực hành thiết kế chương trình theo phương pháp làm mịn dần
Xem thêm các tài liệu học tốt lớp 11 hay khác:
- Giải sgk Tin học 11 Kết nối tri thức
- Giải Chuyên đề Tin học 11 Kết nối tri thức
- Giải SBT Tin học 11 Kết nối tri thức
- Giải lớp 11 Kết nối tri thức (các môn học)
- Giải lớp 11 Chân trời sáng tạo (các môn học)
- Giải lớp 11 Cánh diều (các môn học)
- Soạn văn 11 (hay nhất) - KNTT
- Soạn văn 11 (ngắn nhất) - KNTT
- Giải sgk Toán 11 - KNTT
- Giải Tiếng Anh 11 Global Success
- Giải sgk Tiếng Anh 11 Smart World
- Giải sgk Tiếng Anh 11 Friends Global
- Giải sgk Vật Lí 11 - KNTT
- Giải sgk Hóa học 11 - KNTT
- Giải sgk Sinh học 11 - KNTT
- Giải sgk Lịch Sử 11 - KNTT
- Giải sgk Địa Lí 11 - KNTT
- Giải sgk Giáo dục KTPL 11 - KNTT
- Giải sgk Tin học 11 - KNTT
- Giải sgk Công nghệ 11 - KNTT
- Giải sgk Hoạt động trải nghiệm 11 - KNTT
- Giải sgk Giáo dục quốc phòng 11 - KNTT
- Giải sgk Âm nhạc 11 - KNTT