Thời gian đọc: 6 phút
Tìm kiếm tuyến tính (hay Linear Search) là một thuật toán tìm kiếm đơn giản nhất, trong đó một phần tử trong một danh sách được kiểm tra lần lượt từ đầu đến cuối cho đến khi tìm thấy phần tử cần tìm hoặc đã kiểm tra hết danh sách.
Trong tìm kiếm tuyến tính, mỗi phần tử trong danh sách được so sánh với phần tử cần tìm một cách tuần tự, từ phần tử đầu tiên cho đến phần tử cuối cùng. Nếu tìm thấy phần tử cần tìm, thuật toán trả về vị trí của phần tử đó. Nếu không, thuật toán trả về kết quả cho biết rằng phần tử không tồn tại trong danh sách.
Cho một mảng chứa các số nguyên, hãy viết một hàm tìm kiếm tuyến tính để tìm xem một giá trị có tồn tại trong mảng hay không. Nếu tồn tại, trả về vị trí của phần tử đó, nếu không tồn tại, trả về một thông báo rằng giá trị không có trong mảng.
Dưới đây là ví dụ minh họa cách cài đặt thuật toán tìm kiếm tuyến tính trong PHP:
function linearSearch($array, $target) {
// Duyệt qua từng phần tử trong mảng
for ($i = 0; $i < count($array); $i++) {
// So sánh phần tử hiện tại với giá trị cần tìm
if ($array[$i] == $target) {
// Trả về vị trí của phần tử tìm thấy
return $i;
}
}
// Nếu duyệt hết mảng mà không tìm thấy, trả về -1
return -1;
}
// Ví dụ sử dụng
$array = [34, 78, 12, 90, 56, 23];
$target = 90;
$result = linearSearch($array, $target);
if ($result != -1) {
echo "Phần tử $target được tìm thấy tại vị trí: $result";
} else {
echo "Phần tử $target không có trong mảng";
}
linearSearch($array, $target)
:
$array
cần tìm kiếm và giá trị cần tìm $target
.for
để duyệt qua từng phần tử trong mảng.$array[$i]
với giá trị cần tìm $target
. Nếu tìm thấy, trả về vị trí (chỉ số) của phần tử đó.-1
để biểu thị rằng giá trị không tồn tại trong mảng.$array = [34, 78, 12, 90, 56, 23]
chứa các số nguyên.$target = 90
.
Phần tử 90 được tìm thấy tại vị trí: 3
Nếu thay đổi giá trị cần tìm thành một số không tồn tại trong mảng, ví dụ $target = 100
, kết quả sẽ là:
Phần tử 100 không có trong mảng
$array = [10, 20, 30, 40, 50];
$target = 30;
$result = linearSearch($array, $target);
if ($result != -1) {
echo "Phần tử $target được tìm thấy tại vị trí: $result";
} else {
echo "Phần tử $target không có trong mảng";
}
Kết quả:
Phần tử 30 được tìm thấy tại vị trí: 2
$array = [10, 20, 30, 40, 50];
$target = 60;
$result = linearSearch($array, $target);
if ($result != -1) {
echo "Phần tử $target được tìm thấy tại vị trí: $result";
} else {
echo "Phần tử $target không có trong mảng";
}
Kết quả:
Phần tử 60 không có trong mảng