Giữ giá trị cũ trước khi thay
**Hoán đổi** hai giá trị là làm cho mỗi vị trí nhận giá trị ban đầu của vị trí kia. Giả sử A giữ 12, B giữ 7. Sau hoán đổi, A cần giữ 7 và B giữ 12, không làm mất một trong hai số.
Nếu cho A nhận 7 trước mà chưa giữ số 12 ở đâu, thì cả A và B đều giữ 7; số 12 ban đầu ở A không còn để đưa sang B. Ta dùng một chỗ lưu tạm T:
| Bước | A | B | T |
|---|---|---|---|
| Ban đầu | 12 | 7 | Trống |
| Giữ A vào T | 12 | 7 | 12 |
| Cho A nhận B | 7 | 7 | 12 |
| Cho B nhận T | 7 | 12 | 12 |
Chỗ lưu tạm giúp giữ giá trị 12 trong lúc A được thay bằng 7. Khi dùng thẻ giấy, có thể đổi vị trí hai thẻ trực tiếp; bảng trên giải thích cách giữ dữ liệu khi phải thay giá trị lần lượt.
Bài luyện
A giữ 12, B giữ 7. Đã lưu 12 vào T rồi cho A nhận giá trị của B. Bước tiếp theo để hoàn tất hoán đổi là gì?
A hiện là 7 nên cách này không đưa 12 sang B.
T đang giữ 12, đúng giá trị ban đầu của A.
A cần nhận 7; đưa 12 trở lại A làm mất kết quả đổi chỗ.
Hai vị trí cùng 7 không phải hoán đổi 12 và 7.
Lời giải
Sau hai bước đầu, A = 7, B = 7 và T = 12. Cho B nhận T thì A = 7, B = 12, đúng yêu cầu hoán đổi.
Bài luyện
Vì sao cần giữ giá trị cũ của A trước khi thay A bằng giá trị của B?
Hoán đổi không thay số lượng phần tử.
Mục tiêu là đổi chỗ hai giá trị, không làm chúng bằng nhau.
Không được bỏ dữ liệu khi hoán đổi.
Giá trị cũ phải được giữ đến lúc đưa sang B.
Lời giải
Khi thay nội dung của A, giá trị cũ ở A sẽ mất tại vị trí đó. Chỗ lưu tạm giữ nó để hoàn tất bước đưa sang B.
Việc nhỏ góp vào lời giải của việc lớn
Một bài toán có thể được giải bằng cách kết hợp lời giải của những bài toán nhỏ hơn. Chia nhỏ giúp mỗi phần dễ hiểu, dễ thực hiện và dễ kiểm tra, đồng thời vẫn giữ yêu cầu đầu ra của bài toán ban đầu.
Trong sắp xếp, một việc nhỏ là hoán đổi đúng hai giá trị. Việc lớn hơn quyết định so sánh những phần tử nào, khi nào đổi và lặp đến đâu. Chỉ biết đổi hai giá trị chưa đủ để sắp xếp cả dãy; cần tổ chức các bước theo thuật toán.
Trong tìm kiếm nhị phân, sau một lần so sánh, bài toán tìm trên toàn vùng được thu thành bài toán tìm trên một vùng nhỏ hơn. Vẫn tìm cùng giá trị cần tìm, không đổi sang một yêu cầu khác.
Thực hành với hai thẻ 12 và 7, ghi ba bước dùng chỗ tạm rồi đối chiếu đầu ra 7, 12. Sau đó dùng các thẻ của dãy 9, 4, 7, 2, 6 để thực hiện các phép so sánh và hoán đổi ở hai bài sắp xếp tiếp theo.
Bài luyện
Trong tìm kiếm nhị phân, việc chia thành bài toán nhỏ hơn được thể hiện thế nào?
Vùng nhỏ hơn nhưng vẫn giữ đúng mục tiêu tìm kiếm.
Đổi giá trị cần tìm là đổi bài toán.
Thêm dữ liệu không phải thu hẹp bài toán đang xét.
Vẫn cần kết luận đúng khi không có giá trị.
Lời giải
Kết quả so sánh với phần tử giữa cho phép giữ nửa vùng có thể chứa giá trị cần tìm. Ta giải tiếp cùng yêu cầu trên vùng nhỏ hơn.
Bài luyện
Ý nghĩa phù hợp của chia một bài toán thành các bài toán nhỏ hơn là gì?
Các phần phải phục vụ đúng yêu cầu của bài toán ban đầu.
Cần kết hợp các phần thành lời giải chung.
Đây là ích lợi của tổ chức cách giải thành các phần rõ ràng.
Chia nhỏ giúp tổ chức cách giải; không tự bảo đảm nhanh hơn trong mọi trường hợp.
Lời giải
Mỗi phần nhỏ có thể được mô tả và kiểm riêng; kết hợp chúng giúp giải bài toán lớn rõ hơn. Việc chia không cho phép thay tùy ý mục tiêu ban đầu.
Đang học