Em hãy sắp xếp dãy chữ cái ở Hình 5 theo thứ tự tăng dần bằng thuật toán sắp xếp nổi bọt (mô phỏng quá trình thực hiện bằng hình vẽ tương tự như các Hình 2, 3, 4). Quy ước, trong bảng chữ cái, chữ đứng trước "nhỏ hơn" chữ đứng sau
.
Cho dãy A= [5, 8, 1, 0, 10, 4, 3]. Viết các chương trình sắp xếp dãy A theo thứ tự tăng dần theo 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.
THAM KHẢO!
1.Thuật toán sắp xếp chèn (Insertion Sort):
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = insertion_sort(A)
print("Dãy A sau khi sắp xếp chèn:", sorted_A)
2. Thuật toán sắp xếp chọn (Selection Sort):
def selection_sort(arr):
for i in range(len(arr)):
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]
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = selection_sort(A)
print("Dãy A sau khi sắp xếp chọn:", sorted_A)
3.Thuật toán sắp xếp nổi bọt (Bubble Sort):
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(n - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
A = [5, 8, 1, 0, 10, 4, 3]
sorted_A = bubble_sort(A)
print("Dãy A sau khi sắp xếp nổi bọt:", sorted_A)
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, 11]
*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
Câu 36. Sử dụng thuật toán sắp xếp nổi bọt, hãy nêu các bước để sắp xếp các số 3, 8, 4, 10 theo thứ tự tăng dần?
Trên bảng dữ liệu ở Hình 2, em hãy thực hiện lần lượt các yêu cầu sau:
- Sắp xếp theo thứ tự tăng dần của cột Tốt.
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số.
Hãy quan sát cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số. Em hãy nhận xét về cách hiển thị dữ liệu trong bảng?
- Sắp xếp theo thứ tự tăng dần của cột Tốt
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số
- Kết quả bảng dữ liệu được sắp xếp theo thứ tự trên một cột chính, nếu có nhiều dòng có giá trị khác nhau trên cột chính thì chúng sẽ được sắp xếp theo thứ tự trên cột phụ (khác với cột chính). Ví dụ, trong hoạt động trên, cột Sĩ số được coi là cột chính, cột Tốt là cột phụ. Do đó, cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số theo thứ tự tăng dần của cột tốt.
Thực hiện mô phỏng sắp xếp theo thuật toán sắp xếp chọn dãy sau: 4, 5, 2, 1, 3.
- Bước 1: i = 0;
- Bước 2: Tìm phần tử a[min] nhỏ nhất trong dãy hiện hành từ a[i] đến a[n-1].
- Bước 3: Đổi chỗ a[min] và a[i].
- Bước 4: Nếu i < n-1 thì gán i = i+1; rồi lặp lại bước 2, ngược lại -> Dừng.
hãy liệt kê các bước lặp của thuật toán sắp xếp nổi bọt để sắp xếp các số:10,9,7,106,8,21,20,14,15,16,10,23 theo thứ tự giảm dần?
Em hãy thực hiện sắp xếp các lớp ở bảng dữ liệu trong Hình 2 theo thứ tự tăng dần của số lượng học sinh xếp loại học lực Tốt, rồi tới Khá và sau cùng là Đạt.
- Trên thanh công cụ Data chọn Sort hiển thị hộp thoại
- Khi hộp thoại xuất hiện lựa chọn cột Tốt, sau đó chọn lệnh Add level thêm cột Khá và Đạt, tất cả sắp xếp theo thứ tự Smallest to Largest
- Sau đó chọn OK, kết quả thu được như sau:
Một nhóm học tập có 5 bạn là Huệ, An, Lan, Bắc và Dũng. Em hãy viết tên các bạn ấy theo thứ tự bảng chữ cái:
1) ........... 2) .......... 3) .......... 4) ......... 5) ..........
Gợi ý: Em chú ý âm đầu tiên trong mỗi tên và sắp xếp theo thứ tự xuất hiện trong bải chữ cái.
Trả lời:
Thứ tự đúng là:
1) An 2) Bắc 3) Dũng 4) Huệ 5) Lan
Hình 1 là bảng kết quả hội khoẻ Phù Đổng sắp xếp theo tên trường được lập bằng phần mềm bảng tính. Em hãy trao đổi với bạn để đưa ra cách thực hiện sắp xếp các trường theo thứ tự giảm dần của Tổng huy chương (Hình 2).
Bước 1: Nháy chuột chọn một ô tính trong cột cần sắp xếp dữ liệu - cột E.
Bước 2: Chọn thẻ Data.
Bước 3: Chọn để sắp xếp thứ tự giá trị dữ liệu giảm dần (Tổng huy trương giảm dần)
Sắp xếp tên các bạn trong tổ của em dựa theo thứ tự bảng chữ cái.
Em ghi lại tên các bạn trong tổ, chú ý chữ đầu tiên trong tên và sắp xếp teo thứ tự bảng chữ cái
1. Nguyễn Văn An
2. Trần Minh Hòa
3. Phan Tú Quỳnh
4. Nguyễn Quốc Tuấn
5. Hoàng Thị Vân