Trắc nghiệm 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 - Đề 03
Trắc nghiệm 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 - Đề 03 được xây dựng với nhiều câu hỏi chất lượng, sát với nội dung chương trình học, giúp bạn dễ dàng ôn tập và kiểm tra kiến thức hiệu quả. Hãy cùng bắt đầu làm bài tập trắc nghiệm ngay để nâng cao hiểu biết và chuẩn bị tốt cho kỳ thi sắp tới!
Câu 1: Trong Nhiệm vụ 1 của bài thực hành, mục tiêu chính là sắp xếp danh sách số lượng mặt hàng trong kho. Thuật toán sắp xếp nào được đề xuất sử dụng cho nhiệm vụ này và lý do tại sao?
- A. Sắp xếp chọn, vì nó luôn hiệu quả nhất.
- B. Sắp xếp chèn, vì nó phù hợp với danh sách có kích thước nhỏ hoặc gần sắp xếp.
- C. Sắp xếp nổi bọt, vì nó dễ hiểu nhất.
- D. Sắp xếp nhanh, vì nó là thuật toán hiện đại.
Câu 2: Giả sử danh sách số lượng mặt hàng ban đầu là `[50, 20, 80, 10, 40]`. Áp dụng thuật toán Sắp xếp chèn (tăng dần). Sau khi xử lý xong phần tử thứ 2 (giá trị 20), danh sách sẽ có trạng thái như thế nào?
- A. [20, 50, 80, 10, 40] (Phần [20, 50] đã sắp xếp)
- B. [20, 10, 40, 50, 80]
- C. [20, 50, 80, 10, 40]
- D. [10, 20, 40, 50, 80]
Câu 3: Trong mã Python thực hiện Sắp xếp chèn cho danh sách `arr` theo thứ tự tăng dần, đoạn mã nào sau đây thường được sử dụng để tìm vị trí thích hợp và dịch chuyển các phần tử?
- A. ```python
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
```
- B. ```python
for j in range(len(arr) - 1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
```
- C. ```python
min_idx = i
for j in range(i+1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
```
- D. ```python
arr.sort()
```
Câu 4: Nhiệm vụ 2 yêu cầu sắp xếp danh sách điểm trung bình môn Tin học theo thứ tự giảm dần. Thuật toán nào được đề xuất sử dụng cho nhiệm vụ này trong bài thực hành?
- A. Sắp xếp chọn
- B. Sắp xếp chèn
- C. Sắp xếp nổi bọt
- D. Sắp xếp trộn
Câu 5: Để sắp xếp một danh sách `scores` theo thứ tự giảm dần bằng thuật toán Sắp xếp chọn, trong mỗi lần lặp của vòng lặp ngoài (duyệt qua các vị trí cần sắp xếp), chúng ta cần tìm phần tử có giá trị như thế nào trong phần còn lại của danh sách chưa được sắp xếp?
- A. Nhỏ nhất, để đưa về cuối danh sách.
- B. Nhỏ nhất, để đưa về đầu danh sách.
- C. Lớn nhất, để đưa về cuối danh sách.
- D. Lớn nhất, để đưa về đầu danh sách.
Câu 6: Giả sử danh sách điểm trung bình là `[8.5, 7.0, 9.0, 6.5, 8.0]`. Áp dụng thuật toán Sắp xếp chọn (giảm dần). Sau khi kết thúc vòng lặp ngoài đầu tiên (xử lý vị trí đầu tiên), danh sách sẽ có trạng thái như thế nào?
- A. [8.5, 7.0, 9.0, 6.5, 8.0]
- B. [6.5, 7.0, 8.0, 8.5, 9.0]
- C. [9.0, 7.0, 8.5, 6.5, 8.0]
- D. [8.5, 9.0, 7.0, 6.5, 8.0]
Câu 7: Trong mã Python cho Sắp xếp chọn giảm dần, đoạn mã nào sau đây thường được sử dụng để tìm chỉ số của phần tử lớn nhất trong phần chưa sắp xếp của danh sách `arr` (bắt đầu từ chỉ số `i`)?
- A. ```python
min_idx = i
for j in range(i + 1, len(arr)):
if arr[min_idx] > arr[j]:
min_idx = j
```
- B. ```python
max_idx = i
for j in range(i + 1, len(arr)):
if arr[max_idx] < arr[j]:
max_idx = j
```
- C. ```python
for j in range(len(arr) - 1):
if arr[j] > arr[j+1]:
max_idx = j
```
- D. ```python
max_idx = arr.index(max(arr[i:]))
```
Câu 8: Khi đọc dữ liệu từ tệp văn bản (ví dụ: `kho.inp` trong Nhiệm vụ 1), mỗi dòng đọc được từ tệp thường ở định dạng chuỗi. Để sử dụng giá trị này làm số lượng mặt hàng để sắp xếp, cần thực hiện thao tác chuyển đổi kiểu dữ liệu nào?
- A. Chuyển từ chuỗi (string) sang số nguyên (int).
- B. Chuyển từ chuỗi (string) sang số thực (float).
- C. Chuyển từ số nguyên (int) sang chuỗi (string).
- D. Không cần chuyển đổi, có thể sử dụng trực tiếp.
Câu 9: Sau khi sắp xếp danh sách số lượng mặt hàng (Nhiệm vụ 1) hoặc điểm trung bình (Nhiệm vụ 2), kết quả cần được ghi ra tệp văn bản (ví dụ: `kho.out`). Mỗi phần tử sau khi sắp xếp thường được ghi trên một dòng riêng biệt. Để làm được điều này, khi ghi từng phần tử `item` vào tệp, cần thêm ký tự đặc biệt nào ở cuối mỗi dòng?
- A. Ký tự khoảng trắng (" ").
- B. Ký tự tab ("t").
- C. Ký tự xuống dòng ("n").
- D. Ký tự kết thúc tệp (EOF).
Câu 10: Xét đoạn code Python sau thực hiện Sắp xếp chèn tăng dần trên danh sách `data`: `data = [15, 8, 22, 10]`. Vòng lặp ngoài `for i in range(1, len(data))` bắt đầu chạy từ `i=1`. Khi `i=1`, giá trị `key` là `data[1]` (tức 8). Vòng lặp `while` sẽ thực hiện so sánh và dịch chuyển như thế nào?
- A. So sánh 8 với 15, dịch chuyển 15 sang phải, chèn 8 vào vị trí đầu tiên.
- B. So sánh 8 với 15, 22, 10 và không dịch chuyển gì.
- C. So sánh 8 với 15 và 22, dịch chuyển cả hai sang phải.
- D. So sánh 8 với 15, dịch chuyển 15 sang phải, chèn 8 vào vị trí thứ hai.
Câu 11: Trong Nhiệm vụ 2, giả sử danh sách điểm là `[7.5, 8.0, 7.0, 9.0]`. Áp dụng Sắp xếp chọn giảm dần. Sau khi kết thúc vòng lặp ngoài thứ hai (xử lý vị trí thứ hai, tức chỉ số 1), danh sách sẽ có trạng thái như thế nào?
- A. [9.0, 8.0, 7.0, 7.5]
- B. [9.0, 8.0, 7.5, 7.0]
- C. [7.0, 7.5, 8.0, 9.0]
- D. [8.0, 7.0, 9.0, 7.5]
Câu 12: Khi triển khai thuật toán Sắp xếp chọn giảm dần, biến `max_idx` trong vòng lặp bên trong dùng để làm gì?
- A. Lưu giá trị lớn nhất tìm được.
- B. Lưu giá trị nhỏ nhất tìm được.
- C. Lưu chỉ số của phần tử lớn nhất tìm được.
- D. Lưu chỉ số của phần tử nhỏ nhất tìm được.
Câu 13: Giả sử bạn cần sắp xếp một danh sách rất lớn (ví dụ: 100.000 phần tử). Dựa trên hiểu biết về độ phức tạp (dù chưa học sâu), thuật toán nào trong ba thuật toán đơn giản (Nổi bọt, Chọn, Chèn) có thể cho hiệu suất kém nhất và tại sao?
- A. Sắp xếp nổi bọt, vì nó có thể thực hiện nhiều phép hoán đổi không cần thiết.
- B. Sắp xếp chọn, vì nó luôn phải tìm phần tử lớn nhất/nhỏ nhất trong phần còn lại.
- C. Sắp xếp chèn, vì nó phải dịch chuyển các phần tử.
- D. Cả ba đều có hiệu suất tương đương nhau trên danh sách lớn.
Câu 14: Trong Nhiệm vụ 1 (sắp xếp số lượng mặt hàng tăng dần bằng Sắp xếp chèn), nếu tệp `kho.inp` chứa các số `[30, 10, 50, 20]`, nội dung của tệp `kho.out` sau khi chương trình chạy thành công sẽ là gì?
- A. 30
10
50
20
- B. 10
20
30
50
- C. 50
30
20
10
- D. [10, 20, 30, 50]
Câu 15: Trong Nhiệm vụ 2 (sắp xếp điểm trung bình giảm dần bằng Sắp xếp chọn), nếu tệp `diem.inp` chứa các số `[7.0, 8.5, 6.0, 9.0]`, nội dung của tệp `diem.out` sau khi chương trình chạy thành công sẽ là gì?
- A. 7.0
8.5
6.0
9.0
- B. 6.0
7.0
8.5
9.0
- C. [9.0, 8.5, 7.0, 6.0]
- D. 9.0
8.5
7.0
6.0
Câu 16: Xét đoạn code Python để mở tệp và đọc dữ liệu: `with open("data.inp", "r", encoding="utf8") as f: lines = f.readlines()`. Biến `lines` sẽ chứa dữ liệu ở định dạng nào?
- A. Một chuỗi duy nhất chứa toàn bộ nội dung tệp.
- B. Một danh sách các số nguyên.
- C. Một danh sách các chuỗi, mỗi chuỗi là một dòng từ tệp.
- D. Một danh sách các số thực.
Câu 17: Sự khác biệt cơ bản trong cách hoạt động giữa Sắp xếp chèn và Sắp xếp chọn là gì?
- A. Sắp xếp chèn xây dựng dãy đã sắp xếp bằng cách chèn từng phần tử vào đúng vị trí, trong khi Sắp xếp chọn xây dựng dãy đã sắp xếp bằng cách chọn phần tử lớn nhất/nhỏ nhất và đổi chỗ.
- B. Sắp xếp chèn hiệu quả hơn Sắp xếp chọn trên mọi loại dữ liệu.
- C. Sắp xếp chọn thực hiện nhiều phép hoán đổi hơn Sắp xếp chèn.
- D. Sắp xếp chèn chỉ dùng để sắp xếp tăng dần, còn Sắp xếp chọn dùng để sắp xếp giảm dần.
Câu 18: Giả sử bạn có một danh sách `data = [5, 1, 4, 2, 8]` và áp dụng Sắp xếp nổi bọt (Bubble Sort) để sắp xếp tăng dần. Sau lần duyệt (pass) đầu tiên của vòng lặp ngoài, danh sách sẽ ở trạng thái nào?
- A. [1, 2, 4, 5, 8]
- B. [1, 4, 2, 5, 8]
- C. [5, 4, 2, 1, 8]
- D. [5, 1, 4, 2, 8]
Câu 19: Trong mã Python cho Sắp xếp chèn tăng dần, tại sao vòng lặp ngoài thường bắt đầu từ chỉ số 1 (`for i in range(1, len(arr))`)?
- A. Để bỏ qua phần tử đầu tiên vì nó luôn ở đúng vị trí.
- B. Để đảm bảo thuật toán hoạt động với danh sách rỗng.
- C. Để so sánh phần tử hiện tại với phần tử liền sau nó.
- D. Để bắt đầu xử lý từ phần tử thứ hai và chèn vào phần đầu tiên đã được coi là đã sắp xếp.
Câu 20: Trong Sắp xếp chọn giảm dần danh sách `data`, sau khi tìm thấy chỉ số `max_idx` của phần tử lớn nhất trong phần chưa sắp xếp (bắt đầu từ chỉ số `i`), thao tác tiếp theo cần làm là gì để đưa phần tử lớn nhất về đúng vị trí?
- A. Dịch chuyển tất cả các phần tử từ `i` đến `max_idx` sang phải.
- B. Xóa phần tử tại `max_idx` và chèn nó vào vị trí `i`.
- C. Hoán đổi (đổi chỗ) phần tử tại vị trí `i` với phần tử tại vị trí `max_idx`.
- D. So sánh phần tử tại `i` với phần tử tại `max_idx`.
Câu 21: Một ưu điểm của Sắp xếp chèn so với Sắp xếp chọn trong một số trường hợp thực tế (không xét độ phức tạp lý thuyết trên mọi bộ dữ liệu) là gì?
- A. Luôn nhanh hơn Sắp xếp chọn trên mọi bộ dữ liệu.
- B. Có thể hiệu quả hơn Sắp xếp chọn nếu dữ liệu đầu vào gần như đã được sắp xếp.
- C. Thực hiện ít phép hoán đổi hơn Sắp xếp chọn.
- D. Đảm bảo tính ổn định (duy trì thứ tự tương đối của các phần tử bằng nhau), điều mà Sắp xếp chọn không đảm bảo.
Câu 22: Hãy phân tích đoạn code sau dùng để ghi danh sách `result_list` ra tệp `output.txt`, mỗi phần tử một dòng: `with open("output.txt", "w") as f: for item in result_list: f.write(str(item) + "n")`. Nếu `result_list = [10, 20, 30]`, nội dung tệp `output.txt` sẽ như thế nào?
- A. [10, 20, 30]
- B. 10 20 30
- C. 10
20
30
- D. 10, 20, 30
Câu 23: Khi thực hiện Sắp xếp chèn tăng dần trên danh sách `[4, 1, 3, 2]`, hãy cho biết trạng thái của danh sách sau khi phần tử có giá trị 3 (ban đầu ở chỉ số 2) được chèn vào đúng vị trí của nó trong phần đã sắp xếp.
- A. [1, 3, 4, 2]
- B. [1, 2, 3, 4]
- C. [4, 1, 3, 2]
- D. [1, 4, 3, 2]
Câu 24: Trong Sắp xếp chọn giảm dần trên danh sách `[60, 20, 40, 10, 50]`, sau khi kết thúc vòng lặp ngoài thứ ba (xử lý vị trí thứ ba, tức chỉ số 2), danh sách sẽ có trạng thái như thế nào?
- A. [60, 50, 40, 20, 10]
- B. [60, 40, 50, 10, 20]
- C. [10, 20, 40, 50, 60]
- D. [60, 50, 40, 10, 20]
Câu 25: Giả sử bạn đang thực hiện Nhiệm vụ 1 (sắp xếp tăng dần) và nhận thấy rằng khi chạy chương trình với tệp `kho.inp` chứa một danh sách số đã được sắp xếp từ trước (ví dụ: `[10, 20, 30, 40]`), chương trình vẫn hoạt động đúng nhưng có vẻ rất nhanh. Điều này phù hợp với đặc điểm của thuật toán nào trong ba thuật toán đơn giản?
- A. Sắp xếp chọn
- B. Sắp xếp nổi bọt
- C. Sắp xếp chèn
- D. Cả ba thuật toán đều chậm như nhau với dữ liệu đã sắp xếp.
Câu 26: Trong ngữ cảnh đọc dữ liệu từ tệp, việc sử dụng `encoding="utf8"` khi mở tệp có ý nghĩa gì?
- A. Chỉ định mã hóa ký tự của tệp là UTF-8, giúp đọc đúng các ký tự đặc biệt hoặc tiếng Việt.
- B. Tăng tốc độ đọc tệp.
- C. Chuyển đổi nội dung tệp thành số nguyên.
- D. Kiểm tra xem tệp có tồn tại hay không.
Câu 27: Khi viết hàm thực hiện một thuật toán sắp xếp (ví dụ: `InsertionSort(arr)`), việc hàm nhận vào danh sách `arr` và thực hiện thay đổi trực tiếp trên danh sách đó (thay vì trả về một danh sách mới đã sắp xếp) là hành vi phổ biến. Điều này trong lập trình được gọi là gì?
- A. Đệ quy (Recursion)
- B. Thay đổi tại chỗ (In-place modification)
- C. Tham trị (Pass by value)
- D. Tham chiếu (Pass by reference)
Câu 28: Tại sao trong Sắp xếp chèn tăng dần, khi dịch chuyển phần tử, ta lại gán `arr[j + 1] = arr[j]` và sau đó giảm `j` đi 1 (`j -= 1`)?
- A. Để dịch chuyển phần tử `arr[j]` sang phải một vị trí, tạo chỗ trống để chèn phần tử `key` vào đúng vị trí sau này.
- B. Để đổi chỗ phần tử `arr[j]` với phần tử `arr[j+1]`.
- C. Để tìm phần tử lớn nhất trong phần chưa sắp xếp.
- D. Để kết thúc vòng lặp `while` ngay lập tức.
Câu 29: Trong Sắp xếp chọn giảm dần, giả sử vòng lặp ngoài đang ở chỉ số `i`. Vòng lặp bên trong (`for j in range(i + 1, len(arr))`) tìm `max_idx` trong đoạn `arr[i+1:]`. Điều này có ý nghĩa gì trong quá trình sắp xếp?
- A. Tìm phần tử lớn nhất trong toàn bộ danh sách.
- B. Tìm phần tử nhỏ nhất trong phần chưa sắp xếp.
- C. Tìm phần tử lớn nhất trong phần đã sắp xếp.
- D. Tìm phần tử lớn nhất trong phần danh sách còn lại chưa được sắp xếp (từ vị trí `i+1` đến cuối).
Câu 30: Khi so sánh các thuật toán sắp xếp đơn giản (Nổi bọt, Chọn, Chèn) trong thực tế, yếu tố nào sau đây ít được coi là lợi thế đáng kể của một thuật toán này so với thuật toán khác khi xử lý các danh sách có kích thước rất lớn?
- A. Sự khác biệt về tốc độ thực thi.
- B. Tính đơn giản trong cài đặt.
- C. Khả năng sắp xếp tại chỗ (in-place).
- D. Yêu cầu bộ nhớ bổ sung.
Câu 31: Giả sử cần đọc dữ liệu từ tệp `input.txt` có cấu trúc mỗi dòng là: `Tên: Điểm`. Ví dụ: `An: 8.5
Binh: 7.0
Cuong: 9.0`. Để trích xuất chỉ phần điểm (số thực) từ mỗi dòng, cần thực hiện các thao tác xử lý chuỗi nào sau khi đọc được một dòng?
- A. Tìm vị trí của dấu ":", lấy phần bên trái và chuyển thành số thực.
- B. Tìm vị trí của dấu ":", lấy phần bên phải, loại bỏ ký tự xuống dòng và khoảng trắng (nếu có), rồi chuyển thành số thực.
- C. Chuyển trực tiếp toàn bộ dòng thành số thực.
- D. Chỉ cần đọc dòng và sử dụng trực tiếp vì nó đã là số thực.
Câu 32: Trong Nhiệm vụ 1, việc sắp xếp số lượng mặt hàng theo thứ tự tăng dần có ý nghĩa thực tế gì trong quản lý kho?
- A. Giúp dễ dàng xác định các mặt hàng có số lượng tồn kho thấp nhất.
- B. Giúp dễ dàng xác định các mặt hàng có số lượng tồn kho cao nhất.
- C. Không có ý nghĩa thực tế, chỉ là bài tập.
- D. Giúp tính tổng số lượng mặt hàng trong kho.
Câu 33: Trong Nhiệm vụ 2, việc sắp xếp điểm trung bình học sinh theo thứ tự giảm dần có ý nghĩa thực tế gì trong quản lý kết quả học tập?
- A. Giúp tính điểm trung bình của cả lớp.
- B. Giúp xác định học sinh có điểm trung bình thấp nhất.
- C. Giúp xác định thứ tự ngẫu nhiên của học sinh.
- D. Giúp dễ dàng xác định học sinh có điểm trung bình cao nhất.
Câu 34: Xét đoạn code Sắp xếp chèn tăng dần. Nếu danh sách đầu vào là `[5]`, thuật toán sẽ hoạt động như thế nào?
- A. Vòng lặp ngoài không chạy, danh sách giữ nguyên trạng thái ban đầu.
- B. Thuật toán sẽ gây lỗi vì danh sách quá ngắn.
- C. Phần tử duy nhất sẽ được so sánh với chính nó.
- D. Thuật toán sẽ thực hiện một lần hoán đổi.
Câu 35: Xét đoạn code Sắp xếp chọn giảm dần. Nếu danh sách đầu vào là `[10, 20]`, sau khi thuật toán kết thúc, danh sách sẽ như thế nào?
- A. [10, 20]
- B. [20, 10]
- C. Danh sách không thay đổi.
- D. Chỉ có phần tử 10 được xử lý.
Câu 36: Trong Sắp xếp chèn tăng dần, nếu phần tử `key` đang xét nhỏ hơn tất cả các phần tử trong phần đã sắp xếp đứng trước nó, nó sẽ được chèn vào vị trí nào?
- A. Vị trí ngay sau phần tử lớn nhất trong phần đã sắp xếp.
- B. Vị trí cuối cùng của danh sách.
- C. Vị trí ban đầu của nó.
- D. Vị trí đầu tiên của danh sách.
Câu 37: Trong Sắp xếp chọn giảm dần, nếu phần tử lớn nhất trong phần chưa sắp xếp đã nằm ở vị trí đầu tiên của phần đó (tức là ở chỉ số `i`), thuật toán sẽ thực hiện thao tác gì tiếp theo?
- A. Tìm phần tử nhỏ nhất trong phần còn lại.
- B. Thực hiện hoán đổi phần tử tại vị trí `i` với chính nó (không thay đổi danh sách) và chuyển sang xử lý vị trí tiếp theo.
- C. Dịch chuyển tất cả các phần tử còn lại sang trái.
- D. Dừng thuật toán vì phần còn lại đã sắp xếp.
Câu 38: Giả sử bạn cần đọc một tệp `data.inp` chứa 1000 số nguyên, mỗi số trên một dòng, để sắp xếp. Đoạn code nào sau đây là cách đúng để đọc tất cả các số này vào một danh sách `numbers`?
- A. ```python
numbers = open("data.inp", "r").readlines()
```
- B. ```python
numbers = list(map(float, open("data.inp", "r").readlines()))
```
- C. ```python
numbers = []
with open("data.inp", "r", encoding="utf8") as f:
for line in f:
numbers.append(int(line.strip()))
```
- D. ```python
numbers = [int(line) for line in open("data.inp", "r")]
```
Câu 39: Khi viết kết quả sắp xếp ra tệp `output.txt`, tại sao việc sử dụng `with open(...) as f:` được khuyến khích thay vì chỉ dùng `f = open(...)` và sau đó là `f.close()`?
- A. Đảm bảo tệp được tự động đóng ngay cả khi có lỗi xảy ra trong quá trình xử lý.
- B. Giúp mã chạy nhanh hơn.
- C. Chỉ dùng được cho tệp văn bản.
- D. Ngăn chặn việc ghi đè lên nội dung tệp cũ.
Câu 40: Trong Sắp xếp chèn tăng dần, nếu danh sách đầu vào đã được sắp xếp ngược (ví dụ: `[50, 40, 30, 20, 10]`), thuật toán sẽ hoạt động như thế nào so với danh sách ngẫu nhiên?
- A. Rất nhanh, tương đương trường hợp dữ liệu đã sắp xếp tăng dần.
- B. Hiệu quả hơn so với dữ liệu ngẫu nhiên vì ít phần tử cần dịch chuyển.
- C. Thực hiện ít phép so sánh nhưng nhiều phép hoán đổi.
- D. Thực hiện số lượng phép dịch chuyển và so sánh tối đa, là trường hợp xấu nhất cho thuật toán.
Câu 41: Trong Sắp xếp chọn, số lượng phép hoán đổi (đổi chỗ phần tử) được thực hiện có phụ thuộc vào trạng thái ban đầu của danh sách hay không?
- A. Có, danh sách càng lộn xộn thì số phép hoán đổi càng nhiều.
- B. Không, số lượng phép hoán đổi là cố định (n-1) bất kể trạng thái ban đầu.
- C. Chỉ phụ thuộc vào việc danh sách sắp xếp tăng hay giảm.
- D. Phụ thuộc vào số lượng phần tử bằng nhau trong danh sách.
Câu 42: Khi đọc tệp `diem.inp` trong Nhiệm vụ 2, nếu một dòng trong tệp không phải là số thực hợp lệ (ví dụ: chứa chữ cái), điều gì có khả năng xảy ra khi cố gắng chuyển đổi nó sang số thực bằng `float()`?
- A. Chương trình sẽ bỏ qua dòng đó và tiếp tục.
- B. Dòng đó sẽ được chuyển thành giá trị 0.0.
- C. Chương trình sẽ gặp lỗi (ValueError) và dừng lại.
- D. Phần số trong dòng sẽ được trích xuất, phần chữ bị bỏ qua.
Câu 43: So sánh số lượng phép so sánh giữa Sắp xếp chèn và Sắp xếp chọn trên một danh sách có n phần tử. Phát biểu nào sau đây là đúng trong trường hợp xấu nhất?
- A. Số lượng phép so sánh của Sắp xếp chèn và Sắp xếp chọn là tương đương nhau (cùng bậc O(n^2)).
- B. Sắp xếp chèn luôn thực hiện ít phép so sánh hơn Sắp xếp chọn.
- C. Sắp xếp chọn luôn thực hiện ít phép so sánh hơn Sắp xếp chèn.
- D. Sắp xếp chèn không thực hiện phép so sánh nào trong trường hợp xấu nhất.
Câu 44: Điều gì xảy ra nếu bạn cố gắng mở một tệp để đọc (chế độ "r") nhưng tệp đó không tồn tại?
- A. Một tệp rỗng mới sẽ được tạo ra.
- B. Chương trình sẽ gặp lỗi `FileNotFoundError` và dừng lại.
- C. Chương trình sẽ tự động chuyển sang chế độ ghi ("w").
- D. Hàm `open` sẽ trả về giá trị `None`.
Câu 45: Khi sử dụng Sắp xếp chèn tăng dần, phần nào của danh sách được coi là "đã sắp xếp" trong mỗi bước lặp của vòng lặp ngoài?
- A. Phần đầu của danh sách.
- B. Phần cuối của danh sách.
- C. Toàn bộ danh sách.
- D. Phần tử duy nhất đang được xét.
Câu 46: Trong Sắp xếp chọn giảm dần, sau mỗi lần lặp của vòng lặp ngoài (từ i = 0 đến n-2), phần tử nào được đảm bảo nằm đúng vị trí cuối cùng của nó trong dãy đã sắp xếp giảm dần?
- A. Phần tử nhỏ nhất trong phần còn lại.
- B. Phần tử lớn nhất trong phần còn lại.
- C. Phần tử tại vị trí `i+1`.
- D. Phần tử cuối cùng của danh sách.