Thứ Năm, 13 tháng 9, 2012

Thuật toán tìm MAX nhiều số - cơ bản nhưng không phải dễ hiểu

Giải thuật:
  • mình có 1 dãy các số a,b,c,d,e,f,i,…
  • giả sử ban đầu a là số lớn nhất. Gán max = a
  • Sau đó lần lượt so sánh max với các số còn lại nếu số nào lớn hơn max thì ta gán max = số đó
  • VD: ta có c > max => max = c (nếu c <= max thì ko làm gì hết nhé)
Thay vì sử dụng các biến lẻ, chúng ta có thể áp dụng bài toán với mảng sẽ dễ thực hiện hơn vì có thể dùng vòng lặp.
Hình mô tả thuật toán:

Cài đặt thuật toán với biến riêng lẻ:
Code demo:
max = a;
if(max<b) max = b;
if(max<c) max = c;
if(max<d) max = d;
if(max<e) max = e;
if(max<f) max = f;
…. 
(muốn bao nhiêu biến thì cứ thế mà làm)
Cài đặt thuật toán với mảng:
Code demo:
max = a[0];
for(i=1; i<a.lenght; i++)
     if (max<a[i])
            max = a[i]; 
(vì mình đã gán max khởi đầu bằng a[0] nên mình xuất phát từ vị trí phần tử thứ 1 để tiết kiệm tài nguyên)
Ngoài ra:
Ta cũng có thể sử dụng 1 biến (ko tính biến max) để tìm số lớn nhất của nhiều số
Code demo:
a = System.ReadLine(); // đọc số do người dùng nhập vào
max = a;
for(i=1; i < n; i++) //n là số các số nhập vào
{
      a = System.ReadLine(); 
      if (max < a)
            max = a; 
}
Với tìm MIN cũng tương tự nhé các bạn, chỉ việc đổi dấu < thành dấu > thôi.

Không có nhận xét nào:

Đăng nhận xét