Mục tiêu
Luyện tập sử dụng thuật toán tìm kiếm để tìm kiếm giá trị lớn nhất và nhỏ nhất.
Mô tả- Tìm kiếm giá trị lớn nhất và nhỏ nhất
Vấn đề lập trình máy tính thường liên quan đến việc tìm kiếm các giá trị tối thiểu và tối đa. Trong một cấu trúc dữ liệu được sắp xếp, việc tìm kiếm các giá trị này là một công việc bình thường. Tuy nhiên, tìm kiếm trên một cấu trúc dữ liệu chưa được phân loại là một nhiệm vụ khó khăn hơn.
Hãy bắt đầu bằng việc xác định chúng ta tìm kiếm giá trị nhỏ nhất trên một mảng.
Thuật toán tìm giá trị nhỏ nhất trên một mảng:
- Gán phần tử đầu tiên của mảng cho một biến như là giá trị nhỏ nhất.
- Bắt đầu lặp qua mảng, bắt đầu với phần tử thứ hai, so sánh mỗi phần tử với giá trị nhỏ nhất hiện tại.
- Nếu phần tử hiện tại có giá trị nhỏ hơn giá trị nhỏ nhất hiện tại, gán phần tử hiện tại làm giá trị nhỏ nhất mới.
- Chuyển sang phần tử tiếp theo và lặp lại bước 3.
- Giá trị nhỏ nhất được lưu trữ trong biến đến khi chương trình kết thúc.
Hãy cài đặt thuật toán trên.
Các bước thực hiện
Bước 1: Xây dựng hàm findMin() nhận vào một mảng. Hàm làm nhiệm vụ tìm giá trị nhỏ nhất của mảng nhận vào và trả về giá trị nhỏ nhất đó.
function findMin($arr) { $min = $arr[0]; for ($i = 1; $i < count($arr); ++$i) { if ($arr[$i] < $min) { $min = $arr[$i]; } } return $min; }
Bước 2: Sử dụng hàm findMin() vừa cài đặt
$nums = []; for($i = 0; $i < 100; ++$i){ $nums[$i] = rand(1, 101); } foreach($nums as $num) { echo $num . " "; } $minValue = findMin($nums); echo "</br>"; echo "The mininum value is: " . $minValue;
Bước 3: Đây là kết quả của chương trình
Bước 4: Cài đặt thuật toán tìm giá trị lớn nhất
Thuật toán để tìm giá trị lớn nhất hoạt động theo một cách tương tự. Chỉ định phần tử đầu tiên của mảng là giá trị lớn nhất và sau đó lặp phần còn lại của mảng, so sánh từng phần tử với giá trị cực đại hiện tại. Nếu phần tử hiện tại lớn hơn giá trị cực đại hiện tại, giá trị của phần tử đó được lưu trữ trong biến.
Xây dựng hàm findMax():
function findMax($arr) { $max = $arr[0]; for ($i = 1; $i < count($arr); ++$i) { if ($arr[$i] > $max) { $max = $arr[$i]; } } return $max; }
Bước 5: Xây dựng chương trình tìm cả giá trị nhỏ nhất và giá trị lớn nhất của một mảng.
$nums = []; for($i = 0; $i < 100; ++$i) { $nums[$i] = rand(1,101); } foreach($nums as $num) { echo $num . " "; } $minValue = findMin($nums); echo "<br/>"; echo "The minimum value is: " . $minValue; $maxValue = findMax($nums); echo "<br/>"; echo "The maximum value is: " . $maxValue;
Bước 6: Thực thi chương trình quan sát kết quả:
Trên đây CodeGym đã cùng với bạn luyện tập sử dụng thuật toán tìm kiếm để tìm giá trị nhỏ nhất/lớn nhất. Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!
0 Lời bình