Dương Thị Kim Anh
Giới thiệu về bản thân
Thuật toán sắp xếp chọn (Selection Sort) là một thuật toán sắp xếp đơn giản, hoạt động theo nguyên lý chọn phần tử nhỏ nhất (hoặc lớn nhất, tùy theo yêu cầu) từ danh sách chưa sắp xếp và di chuyển nó vào vị trí đúng trong dãy đã sắp xếp. Để sắp xếp danh sách lương nhân viên từ thấp đến cao, thuật toán sẽ chọn phần tử nhỏ nhất trong phần chưa sắp xếp và đưa nó vào đúng vị trí. Mô tả cách thuật toán hoạt động trên danh sách lương: Giả sử công ty có danh sách lương của n nhân viên cần sắp xếp. Danh sách này là một mảng các số, mỗi số đại diện cho mức lương của một nhân viên. Bước 1: Bắt đầu từ phần tử đầu tiên trong danh sách. Giả sử vị trí hiện tại là vị trí đầu tiên (chỉ số 0). Tìm phần tử nhỏ nhất từ vị trí hiện tại đến cuối danh sách. Bước 2: Sau khi tìm được phần tử nhỏ nhất, nếu nó không phải là phần tử ở vị trí đầu tiên, đổi chỗ phần tử nhỏ nhất với phần tử ở vị trí hiện tại (chỉ số 0). Bước 3: Chuyển sang vị trí tiếp theo trong danh sách (chỉ số 1). Lặp lại bước 1 và 2: tìm phần tử nhỏ nhất trong phần còn lại của danh sách và đổi chỗ với phần tử ở vị trí hiện tại. Bước 4: Tiếp tục làm như vậy cho đến khi duyệt hết tất cả các phần tử trong danh sách. Bước 5: Sau khi duyệt qua tất cả các phần tử, danh sách sẽ được sắp xếp theo thứ tự tăng dần từ thấp đến cao. Ví dụ minh họa: Giả sử danh sách lương ban đầu của 5 nhân viên là: [4500, 2000, 3500, 3000, 5000] 1. Bước 1: Tìm phần tử nhỏ nhất trong danh sách từ vị trí đầu tiên (4500, 2000, 3500, 3000, 5000), ta tìm được phần tử nhỏ nhất là 2000 và đổi chỗ với phần tử ở vị trí đầu tiên. Danh sách sau bước này: [2000, 4500, 3500, 3000, 5000] 2. Bước 2: Chuyển sang vị trí thứ hai (4500, 3500, 3000, 5000), ta tìm phần tử nhỏ nhất là 3000 và đổi chỗ với phần tử ở vị trí thứ hai. Danh sách sau bước này: [2000, 3000, 3500, 4500, 5000] 3. Bước 3: Tiếp tục với vị trí thứ ba (3500, 4500, 5000), phần tử nhỏ nhất là 3500, không cần đổi chỗ vì phần tử đã ở vị trí đúng. 4. Bước 4: Tiếp tục với các phần tử còn lại, danh sách đã sắp xếp đúng. Kết quả cuối cùng: [2000, 3000, 3500, 4500, 5000] Tóm tắt các bước: 1. Lặp qua tất cả các phần tử của danh sách. 2. Tại mỗi vòng lặp, tìm phần tử nhỏ nhất trong phần chưa sắp xếp. 3. Đổi chỗ phần tử nhỏ nhất với phần tử ở vị trí hiện tại. 4. Tiếp tục đến phần tử tiếp theo và lặp lại cho đến khi danh sách được sắp xếp hoàn chỉnh. Đánh giá: Độ phức tạp thời gian: O(n²), vì thuật toán phải thực hiện tìm kiếm phần tử nhỏ nhất trong dãy chưa sắp xếp cho mỗi phần tử trong danh sách. Thực hiện O(n) phép so sánh cho mỗi bước lặp, và có O(n) bước lặp. Ưu điểm: Đơn giản và dễ hiểu. Nhược điểm: Hiệu suất kém với các danh sách lớn, vì thuật toán có độ phức tạp thời gian O(n²). Thuật toán này phù hợp với danh sách nhỏ hoặc khi yêu cầu đơn giản và không cần tối ưu hóa hiệu suất.
a) Mô tả cách sử dụng thuật toán tìm kiếm tuần tự để tìm cuốn sách "Lập trình Python cơ bản" Thuật toán tìm kiếm tuần tự hoạt động theo cách đơn giản: ta sẽ lần lượt duyệt qua từng phần tử trong danh sách, so sánh từng phần tử với giá trị cần tìm. Nếu phần tử đang xét trùng với giá trị cần tìm, thuật toán dừng lại và trả về kết quả. Cách thực hiện: 1. Bắt đầu từ phần tử đầu tiên trong danh sách. 2. So sánh tiêu đề cuốn sách tại vị trí hiện tại với tiêu đề cuốn sách cần tìm ("Lập trình Python cơ bản"). 3. Nếu tiêu đề trùng với cuốn sách cần tìm, dừng và trả về vị trí cuốn sách đó trong danh sách. 4. Nếu không trùng, chuyển sang phần tử tiếp theo trong danh sách và tiếp tục bước 2. 5. Lặp lại các bước trên cho đến khi tìm thấy cuốn sách cần tìm hoặc đã duyệt hết danh sách. 6. Nếu duyệt hết danh sách mà không tìm thấy cuốn sách, thông báo rằng cuốn sách không có trong danh sách. b) Nếu danh sách có 10.000 cuốn sách, trong trường hợp xấu nhất, thủ thư cần thực hiện bao nhiêu lần so sánh để tìm được cuốn sách mong muốn? Trong trường hợp xấu nhất, cuốn sách "Lập trình Python cơ bản" có thể là cuốn sách cuối cùng trong danh sách hoặc có thể không có trong danh sách. Khi đó, thủ thư sẽ cần thực hiện mỗi lần so sánh một cuốn sách cho đến khi tìm được cuốn sách hoặc duyệt hết tất cả các cuốn sách. Vì danh sách có 10.000 cuốn sách, trong trường hợp xấu nhất, số lần so sánh sẽ là 10.000 lần (mỗi cuốn sách sẽ được so sánh một lần). Tóm lại: a) Thuật toán tìm kiếm tuần tự sẽ lần lượt so sánh mỗi cuốn sách với cuốn sách cần tìm cho đến khi tìm được hoặc duyệt hết danh sách. b) Trong trường hợp xấu nhất, thủ thư cần thực hiện 10.000 lần so sánh.
Dưới đây là phân tích các công thức trong phần mềm bảng tính: a. = 5^2 + 6 * 101 Đúng: Công thức này sẽ thực hiện phép toán theo thứ tự ưu tiên: 5^2 (làm phép lũy thừa) = 25 6 * 101 (làm phép nhân) = 606 Kết quả là 25 + 606 = 631. b. = 6*(3+2)) Sai: Công thức này có một dấu ngoặc thừa ()) thừa ở cuối. Để công thức đúng, cần phải loại bỏ dấu ngoặc thừa này. Chính xác sẽ là: = 6 * (3 + 2). c. = 2(3+4) Sai: Trong các phần mềm bảng tính (như Excel), bạn không thể bỏ dấu nhân (*) khi nhân một số với biểu thức trong dấu ngoặc. Chính xác sẽ là: = 2 * (3 + 4). d. = 1^2 + 2^2 Đúng: Công thức này sẽ tính các lũy thừa: 1^2 = 1 2^2 = 4 Kết quả là 1 + 4 = 5. Tóm lại: Công thức b và c là sai.