Mục tiêu
Tìm giá trị nhỏ nhất của mảng- luyện tập tạo và sử dụng hàm, truyền mảng vào hàm.
Mô tả bài toán- tìm giá trị nhỏ nhất của mảng
Xây dựng hàm nhận vào một tham số là một mảng cho trước. Hàm thực hiện tìm giá trị nhỏ nhất trong mảng và trả về giá trị đó. Sử dụng hàm vừa xây dựng trên với mảng như sau:
arr1: [3, 5, 1, 8, -3, 7, 8] arr2: [7, 12, 6, 9, 20, 56, 89] arr3: [] arr4: [0, 0, 0, 0, 0, 0]
Để hoàn thành bài thực hành, bạn cần:
- Đưa mã nguồn lên GitHub
- Dán link của repository lên phần nộp bài trên CodeGymX
Hướng dẫn
Bước 1: Xây dựng hàm
Các bước thực thi trong hàm:
- Giả sử phần tử đầu tiên trong mảng là giá trị nhỏ nhất. Gán giá trị của phần tử này cho biến min.
- Duyệt mảng từ phần tử tiếp theo. Kiểm tra nếu giá trị của phần tử tiếp theo trong mảng nhỏ hơn min thì gán min = arr[i] (với i ở vị trí của phần tử tiếp theo)
- Kết thúc duyệt mảng, tìm được giá trị min trong mảng. Hàm trả về giá trị min đó.
Code mẫu như sau:
function minArray(arr) { let min = arr[0]; for(var i = 1; i < arr.length; i++){ if(arr[i] < min){ min = arr[i]; } } return min; }
Bước 2: Sử dụng hàm
let arr1 = [3, 5, 1, 8, -3, 7, 8]; let min = minArray(arr1); alert(min);
Bước 3: Chạy chương trình. Quan sát kết quả.
Bước 4: Tương tự với mảng được khởi tạo các phần tử mặc định
arr2: [7, 12, 6, 9, 20, 56, 89] arr3: [] arr4: [0, 0, 0, 0, 0, 0]
Bước 5: Với mảng không có phần tử nào sửa lại hàm minArray để kiểm tra số phần tử trong mảng.
Nếu độ dài mảng bằng 0. Thì trả về -1.
function minArray(arr) { if(arr.length == 0) return -1; let min = arr[0]; for(let i = 1; i < arr.length; i++){ if(arr[i] < min){ min = arr[i]; } } return min; }
Vậy khi hàm trả về giá trị -1 ta hiểu rằng mảng này đang rỗng.
Mở rộng: Tuy nhiên có trường hợp xảy ra là nếu trong mảng có phần tử -1 là phần tử nhỏ nhất thì sẽ xử lý thế nào?
Gợi ý: Cần xây dựng lại hàm trên. Không phải trả về giá trị min trong mảng, mà trả về vị trí của phần tử trong mảng. Do đó, nếu hàm trả về -1 tức là mảng rỗng.
Trên đây CodeGym đã cùng với bạn luyện tập sử dụng hàm, truyền mảng vào hàm. 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