Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Khái niệm bài toán và thuật toán qua ví dụ cụ thể

Tìm hiểu khái niệm bài toán

Bài toán trong tin học được hiểu là một việc gì đó mà ta muốn máy tính thực hiện nhằm cho ra kết quả.

Ví dụ như là tính diện tích hình chữ nhật, tìm ước chung lớn nhất của hai số nguyên dương, giải phương trình bậc nhất, quản lý nhân sự, quản lý tiền lương của nhân viên…

Muốn giải một bài toán nào đó trên máy tính, trước tiên ta cần xác định được hai yếu tố cơ bản:

  • Đầu vào (Input): đưa vào máy thông tin gì ( các thông tin đã có )
  • Đầu ra (Output): cần lấy ra thông tin gì (các thông tin cần tìm )

Hay ta có thể hiểu một cách đơn giản những thông tin mà chúng ta đã biết thì gọi là input, còn những thông tin chúng ta cần tìm là output.

Ví dụ 1: Biết chiều rộng và chiều dài của hình chữ nhật. Tính diện tích hình chữ nhật

  • Input: chiều rộng, chiều dài
  • Output: diện tích

Ví dụ 2: Giải phương trình bậc nhất ax+b = 0

  • Input: Hệ số a, b (a khác 0)
  • Output: Nghiệm của phương trình

Ví dụ 3: Tìm ước chung lớn nhất của hai số nguyên dương

  • Input: a, b nguyên dương
  • Output: UCLN của a,b

Ví dụ 4: Xếp loại kết quả học tập của học sinh

  • Input: Bảng điểm của học sinh trong lớp
  • Output: Bảng xếp loại học lực

Như vậy, khi muốn giải quết một bài toán thì điều đầu tiên chúng ta cần phải xác định được đầu vào (input) và đầu ra (output) của bài toán. Ta gọi chung việc xác định bài toán là xác định input và xác định output.

Tìm hiểu khái niệm và tính chất của thuật toán

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Một câu hỏi được đặt ra là làm sao khi ta đưa thông tin vào máy tính, ta có thể xác định được output của bài toán. Việc chỉ ra tường minh một cách tìm output của bài toán được gọi là thuật toán. Vậy thuật toán là gì chúng ta cùng nhau tìm hiểu khái niệm sau:

Thuật toán (algorithm) để giải một bài toán là một dãy hứu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy thao tác đó, từ Input của bài toán, ta nhận được Output cần tìm.

Từ định nghĩa ở trên, với thuật toán ta cần quan tâm đếm 3 điểm chính sau:

+ Dãy hữu hạn các thao tác

+ Sắp xếp có thứ tự

+Từ input cho ra output

Để trình bày thuật toán, ta sẽ có nhiều cách khác nhau như: Dùng ngôn ngữ tự nhiên, mã giải, sơ đồ khối, ngôn ngữ lập trình, các bảng điều khiển.

Các cách viết thuật toán:

Sau đây chúng tôi sẽ trình bày cho các bạn 2 cách biểu diễn thuật toán gồm có các cách như sau:

Cách 1: Dùng phương pháp liệt kê

Ta sẽ liệt kê ra các thao tác cần tiến hành một cách tuần tự

Xác định bài toán

  • Input: Các số thực a, b, c (a khác 0)
  • Output: Số thực x thỏa : ax2 + bx + c = 0

Trình bày thuật toán

Bước 1: Nhập hệ số a, b, c (a khác 0)

Bước 2: Tính ∆ = b2 – 4ac

Bước 3: Nếu ∆ < 0 thì kết luận phương trình vô nghiệm rồi kết thúc

Bước 4: Nếu ∆ = 0 thì phương trình có nghiệm kép x1 = x2 = rồi kết thúc thuật toán, nếu khác 0 thì chuyển sao bước tiếp theo

Bước 5: Nếu ∆ > 0 thì phương trình có 2 nghiệm là

x1 = ; x2=rồi kết thúc

Ví dụ 2: Thuật toán tìm số lớn nhất trong dãy

Xác định bài toán:

  • Input: Số nguyên dương N, dãy N số nguyên a1,…,aN
  • Output: Giá trị lớn nhất của dãy số

Ý tưởng của thuật toán:

  • Khởi tạo giá trị lớn nhất Max = a1.
  • Lần lượt xét i từ 2 đến N, ta so sánh giá trị số hạng ai với giá trị Max, nếu ai > Max thì Max là giá trị ai.

Thuật toán được mô tả như như sau (mô tả liệt kê)

  • Bước 1: Nhập N và cá số a1,a2,…,an
  • Bước 2: Max := a1, i := 2;
  • Bước 3: Nếu i > N thì chuyển đến bước 6
  • Bước 4: Nếu ai > Max thì Max := ai;
  • Bước 5: i := i + 1 rồi quay lại bước 3;
  • Bước 6: Thông báo giá trị Max rồi kết thúc.

Quy ước vẽ hình:

Thế hiện thao tác nhập, xuất dữ liệu: hình ô van

Thể hiện thao tác so sánh: hình thoi

Thể hiện các phép toán: hình chữ nhật

Quy định trình tự các thao tác thực hiện: các mũi tên

Các tính chất của thuật toán:

  • Tính chính xác: nhằm giúp kết quả tính toán hay các thao tác mà máy tính thực hiện đưa ra kết quả chính xác.
  • Tính rõ ràng: Thuật toán thực hiện bằng câu lệnh minh bạch, rõ ràng.
  • Tính khách quan: thuật toán dù nhiều người thực hiện trên máy tính cho kết quả giống nhau.
  • Tính phổ dụng: Thuật toán không phải dùng cho các bài toán nhất định mà có thể áp dụng cho một lớp các bài toán với điều kiện đầu vào giống nhau.
  • Tính kết thúc: Thuật toán là các số hữu hạn các bước tính toán.

Xem thêm: Các công thức toán học 12

Qua bài viết này, các bạn đã hiểu được thế nào là bài toán và thuật toán, không có gì quá khó hiểu phải không nào. Các bạn hãy đọc kĩ các ví dụ để có thể dễ hiểu hơn, cảm ơn các bạn đã theo dõi bài viết của chúng tôi, nếu có thắc mắc các bạn hãy để lại comment, chúng tôi sẽ giúp bạn giải đáp nhé.

Tham khảo thêm:
  • 7 hằng đẳng thức đáng nhớ cơ bản và mở rộng
  • Ảnh hưởng của ánh sáng lên đời sống sinh vật
  • Ảnh hưởng của môi trường lên sự biểu hiện của gen
  • Ảnh hưởng của nhiệt độ và độ ẩm lên đời sống sinh vật
  • Ảnh hưởng của thuốc hóa học bảo vệ thực vật đến quần thể sinh vật và môi trường

Bạn có thể quan tâm:

Sự khác biệt giữa Toán học và Toán học Ứng dụng

Toán học o với Toán học Ứng dụng Toán học đầu tiên xuất hiện từ nhu cầu đếm hàng ngày của người cổ đại. Giao dịch, đề cập đến thời gian và đo lường các con ố v

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Lý thuyết: Bài toán và thuật toán trang 32 SGK Tin học 10

1. Khái niệm bài toán

-Bài toánlà một việc nào đó mà con người muốn máy tính thực hiện.

- Các yếu tố của một bài toán:

+Input:Thông tin đã biết, thông tin đưa vào máy tính.

+Output:Thông tin cần tìm, thông tin lấy ra từ máy tính.

- Ví dụ: Bài toán tìm ước chung lớn nhất của 2 số nguyên dương, khi đó:

+ Input: hai số nguyên dương A, B.

+ Output: ước chung lớn nhất của A và B

2. Khái niệm thuật toán

a) Khái niệm

Thuật toán là 1 dãy hữu hạn các thao tác được sắp xếp theo 1 trình tự xác định sao cho sau khi thực hiện dãy thao tác ấy, từ Input của bài toán, ta nhận được Output cần tìm.

b) Biểu diễn thuật toán

- Sử dụng cách liệt kê: nêu ra tuần tự các thao tác cần tiến hành.

- Sử dụng sơ đồ khối để mô tả thuật toán.

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

c) Các tính chất của thuật toán

- Tính dừng: thuật toán phải kết thúc sau 1 số hữu hạn lần thực hiện các thao tác.

- Tính xác định: sau khi thực hiện 1 thao tác thì hoặc là thuật toán kết thúc hoặc là có đúng 1 thao tác xác định để được thực hiện tiếp theo.

- Tính đúng đắn: sau khi thuật toán kết thúc, ta phải nhận được Output cần tìm.

3. Một số ví dụ về thuật toán

Ví dụ 1: Kiểm tra tính nguyên tố của 1 số nguyên dương

Xác định bài toán

- Input: N là một số nguyên dương;

- Output: ″N là số nguyên tố″ hoặc ″N không là số nguyên tố″.

Ý tưởng:

- Định nghĩa: ″Một số nguyên dương N là số nguyên tố nếu nó chỉ có đúng hai ước là 1 và N″

- Nếu N = 1 thì N không là số nguyên tố.

- Nếu 1 < N < 4 thì N là số nguyên tố.

- N ≥ 4: Tìm ước i đầu tiên > 1 của N.

+ Nếu i < N thì N không là số nguyên tố (vì N có ít nhất 3 ước 1, i, N).

+ Nếu i = N thì N là số nguyên tố.

Xây dựng thuật toán

a) Cách liệt kê

- Bước 1: Nhập số nguyên dương N;

- Bước 2: Nếu N=1 thì thông báo ″N không là số nguyên tố″, kết thúc;

- Bước 3: Nếu N<4 thì thông báo ″N là số nguyên tố″, kết thúc;

- Bước 4: i ← 2;

- Bước 5: Nếu i là ước của N thì đến bước 7;

- Bước 6: i ← i+1 rồi quay lại bước 5; (Tăng i lên 1 đơn vị)

- Bước 7: Nếu i = N thì thông báo ″N là số nguyên tố″, ngược lại thì thông báo ″N không là số nguyên tố″, kết thúc;

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Lưu ý:Nếu N >= 4 và không có ước trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố.

Ví dụ 2:Sắp xếp bằng cách tráo đổi

• Xác định bài toán

- Input: Dãy A gồm N số nguyên a1, a2,…, an

- Output: Dãy A được sắp xếp thành dãy không giảm.

Ý tưởng

- Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số sau ta đổi chỗ chúng cho nhau. (Các số lớn sẽ được đẩy dần về vị trí xác định cuối dãy).

- Việc này lặp lại nhiều lượt, mỗi lượt tiến hành nhiều lần so sánh cho đến khi không có sự đổi chỗ nào xảy ra nữa.

• Xây dựng thuật toán

a) Cách liệt kê

- Bước 1: Nhập N, các số hạng a1, a2,…, an;

- Bước 2: M ← N;

- Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp xếp, rồi kết thúc;

- Bước 4: M ← M – 1, i ← 0;

- Bước 5: i ← i + 1;

- Bước 6: Nếu i > M thì quay lạibước 3;

- Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;

- Bước 8: Quay lạibước 5;

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Ví dụ 3:Bài toán tìm kiếm

• Xác định bài toán

- Input : Dãy A gồm N số nguyên khác nhau a1, a2,…, an và một số nguyên k (khóa)

Ví dụ :A gồm các số nguyên ″ 5 7 1 4 2 9 8 11 25 51″ và k = 2 (k = 6).

- Output: Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 2 trong dãy là 5 (không tìm thấy 6)

Ý tưởng

Tìm kiếm tuần tự được thực hiện một cách tự nhiên: Lần lượt đi từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi gặp một số hạng bằng khóa hoặc dãy đã được xét hết mà không tìm thấy giá trị của khóa trên dãy.

Xây dựng thuật toán

a) Cách liệt kê

- Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

- Bước 2: i ← 1;

- Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;

- Bước 4: i ←i+1;

- Bước 5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc;

- Bước 6: Quay lại bước 3;

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Ví dụ 4:Tìm kiếm nhị phân

Xác định bài toán

- Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2,…, an và một số nguyên k.

Ví dụ: Dãy A gồm các số nguyên 2 4 5 6 9 21 22 30 31 33 và k = 21 (k = 25)

- Output : Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 21 trong dãy là 6 (không tìm thấy 25)

Ý tưởng

Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k với số hạng ở giữa phạm vi tìm kiếm (agiữa), khi đó chỉ xảy ra một trong ba trường hợp:

- Nếu agiữa= k thì tìm được chỉ số, kết thúc;

- Nếu agiữa> k thì việc tìm kiếm thu hẹp chỉ xét từ adầu(phạm vi) → agiữa- 1;

- Nếu agiữa< k việc tìm kiếm thu hẹp chỉ xét từ agiữa + 1→acuối(phạm vi).

Quá trình trên được lặp lại cho đến khi tìm thấy khóa k trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.

Xây dựng thuật toán

a) Cách liệt kê

- Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

- Bước 2: Đầu ←1; Cuối ←N;

- Bước 3: Giữa←[(Đầu+Cuối)/2];

- Bước 4: Nếu agiữa= k thì thông báo chỉ số Giữa, rồi kết thúc;

- Bước 5: Nếu agiữa> k thì đặt Cuối = Giữa - 1 rồi chuyển sang bước 7;

- Bước 6: Đầu ←Giữa + 1;

- Bước 7: Nếu Đầu > Cuối thì thông báo không tìm thấy khóa k trên dãy, rồi kết thúc;

- Bước 8: Quay lại bước 3.

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Loigiaihay.com

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 1 trang 44 SGK Tin học 10

    Hãy phát biểu một bài toán và chỉ rõ Input và Output của bài toán đó.

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 3 trang 44 SGK Tin học 10

    Hãy chỉ ra tính dừng của thuật toán tìm kiếm tuần tự.

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 2 trang 44 SGK Tin học 10

    Hãy mô tả thuật toán giải các bài toán sau bằng cách liệt kê hoặc bằng sơ đồ khối.

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 4 trang 44 SGK Tin học 10

    Cho N và dãy số a1....aN, hãy tìm giá trị nhỏ nhất (Min) của dãy đó.

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 6 trang 44 SGK Tin học 10

    Cho N và dãy số a1... aN, hãy sắp xếp dãy số đó thành dãy số không tăng (số hạng trước lớn hơn hay bằng số hạng sau).

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Bài tập và thực hành 6: Làm quen với Word trang 106 SGK Tin học 10

    Tập di chuyển, xoá, sao chép phần văn bản, dùng cả ba cách: lệnh chọn, nút lệnh trên thanh công cụ và tổ hợp phím tắt.

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Thực hành 7: Định dạng đoạn văn bản trang 112 SGK Tin học 10

    Hãy áp dụng những thuộc tính định dạng đã biết để trình bày lại đơn xin học dựa trên mẫu sau đây:

  • Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

    Câu 1 trang 98 SGK Tin học 10

    Hãy mô tả các chức năng chung của hệ soạn thảo văn bản.

1. Khái niệm bài toán

- Bài toán là một việc nào đó ta muốn máy tính thực hiện. Ví dụ: Giải phương trìnhbậc 2, quản lý nhân viên…

- Các bài toán được cấu tạo bởi 2 thành phần cơ bản:

  • Input: các thông tin đã có.
  • Output: Các thông tin cần tìm từ Output.

Bài 4. Bài toán và thuật toán

1. Khái niệm bài toán

a, Khái niệm

- Bài toán là một việc nào đó mà con người muốn máy tính thực hiện

- Các yếu tố của một bài toán:

+ Input: Thông tin đã biết, thông tin đưa vào máy tính

+ Output: Thông tin cần tìm, thông tin lấy ra từ máy tính

b. Ví dụ

+ Tìm USCLN của 2 số nguyên dương

+ Tìm số lớn nhất trong 3 số nguyên dương a,b,c

+ Tìm nghiệm của phương trình bậc nhất: ax + b = 0 (a≠0)

+ ...

2. Khái niệm thuật toán

a. Khái niệm

Thuật toán để giải một bài toán là:

+ Một dãy hữu hạn các thao tác (tính dừng)

+ Các thao tác được tiến hành theo một trình tự xác định (tính xác định)

+ Sau khi thực hiện xong dãy các thao tác đó ta nhận được Output của bài toán (tính đúng đắn)

b. Cách biểu diễn thuật toán

Có 2 cách để biểu diễn thuật toán:

- Cách dùng phương pháp liệt kê: Nêu ra tuần tự các thao tác cần tiến hành

+ Ví dụ:Cho bài toán Tìm nghiệm của phương trình bậc 2: ax2 + bx + c = 0 (a≠0)?

+ Xác định bài toán

Input: Các số thực a, b, c

Output: Các số thực x thỏa mãn ax2 + bx + c = 0 (a≠0)

+ Thuật toán:

Bước 1: Nhập a, b, c (a≠0)

Bước 2: Tính Δ = b2 – 4ac

Bước 3: Nếu Δ>0 thì phương trình có 2 nghiệm là

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Bước 4: Nếu Δ = 0 thì phương trình có nghiệm kép

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

rồi kết thúc thuật toán. Nếu không chuyển sang bước tiếp theo

Bước 5: Kết luận phương trình vô nghiệm rồi kết thúc

- Cách dùng sơ đồ khối

+ Hình thoi: thể hiện thao tác so sánh;

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

+ Hình chữ nhật: thể hiện các phép tính toán;

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

+ Hình ô van: thể hiện thao tác nhập, xuất dữ liệu;

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

+ Các mũi tên: qui định trình tự thực hiện các thao tác.

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

3. Một số ví dụ về thuật toán

Bài toán 1: Kiểm tra tính nguyên tố

1. Xác định bài toán

- Input: N là một số nguyên dương

- Output:

+ N là số nguyên tố hoặc

+ N không là số nguyên tố

- Định nghĩa: "Một số nguyên dương N là số nguyên tố nếu nó chỉ có đúng hai ước là 1 và N"

- Tính chất:

+ Nếu N = 1 thì N không là số nguyên tố

+ Nếu 1 < N < 4 thì N là số nguyên tố

2. Ý tưởng

- N<4: Xem như bài toán đã được giải quyết

- N≥4: Tìm ước i đầu tiên > 1 của N

+ Nếu i < N thì N không là số nguyên tố (vì N có ít nhất 3 ước 1, i, N)

+ Nếu i = N thì N là số nguyên tố

3. Xây dựng thuật toán

a) Cách liệt kê

Bước 1: Nhập số nguyên dương N

Bước 2: Nếu N=1 thì thông báo "N không là số nguyên tố", kết thúc;

Bước 3: Nếu N<4thì thông báo "N là số nguyên tố", kết thúc;

Bước 4: i← 2;

Bước 5: Nếu i là ước của N thì đến bước 7

Bước 6: i← i+1 rồi quay lại bước 5; ( tăng i lên 1 đơn vị)

Bước 7: Nếu i = N thì thông báo "N là số nguyên tố", ngược lại thì thông báo "N không là số nguyên tố", kết thúc;

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Hình 1. Sơ đồ khối thuật toán kiểm tra tính nguyên tố của một số nguyên dương N​

Lưu ý:Nếu N ≥ 4 và không có ước trong phạm vi từ 2 đến phần nguyên căn bậc 2 của N thì N là số nguyên tố

Bài toán 2: Sắp xếp bằng cách tráo đổi

1. Xác định bài toán

- Input: Dãy A gồm N số nguyên a1, a2,…,an

Ví dụ : Dãy A gồm các số nguyên: 2 4 8 7 1 5

- Output: Dãy A được sắp xếp thành dãy không giảm

Dãy A sau khi sắp xếp: 1 2 4 5 7 8

2. Ý tưởng

- Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước > số sau ta đổi chỗ chúng cho nhau.(Các số lớn sẽ được đẩy dần về vị trí xác định cuối dãy)

- Việc này lặp lại nhiều lượt, mỗi lượt tiến hành nhiều lần so sánh cho đến khi không có sự đổi chỗ nào xảy ra nữa

3. Xây dựng thuật toán

- Bước 1. Nhập N, các số hạng a1, a2,…,an;

- Bước 2. Đầu tiên gọi M là số số hạng cần so sánh, vậy M sẽ chứa giá trị của N:

- Bước 3. Nếu số số hạng cần so sánh < 2 thì dãy đã được sắp xếp. Kết thúc;

- Bước 4. M chứa giá trị mới là số phép so sánh cần thực hiện trong lượt: . Gọi i là số thứ tự của mỗi lần so sánh, đầu tiên i 0;

- Bước 5. Để thực hiện lần so sánh mới, i tăng lên 1(lần so sánh thứ i)

- Bước 6. Nếu lần so sánh thứ i> số phép so sánh M: đã hoàn tất M số phép so sánh của lượt này. Lặp lại bước 3, bắt đầu lượt kế (với số số hạng cần so sánh mới chính là M đã giảm 1 ở bước 4);

- Bước 7. So sánh 2 phần tử ở lần thứ i là ai và ai+1. Nếu ai > ai+1 thì tráo đổi 2 phần tử này;

- Bước 8. Quay lại bước 5

a) Đối chiếu, hình thành các bước liệt kê

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Hình 2. Sơ đồ khối thuật toán sắp xếp bằng cách tráo đổi​

Bài toán 3: Tìm kiếm tuần tự

1. Xác định bài toán

- Input : Dãy A gồm N số nguyên khác nhau a1, a2,…,an và một số nguyên k (khóa)

Ví dụ : Dãy A gồm các số nguyên: 5 7 1 4 2 9 8 11 25 51 . Và k = 2 (k = 6)

- Output: Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 2 trong dãy là 5(không tìm thấy 6)

2. Ý tưởng

Tìm kiếm tuần tự được thực hiện một cách tự nhiên: Lần lượt đi từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi gặp một số hạng bằng khóa hoặc dãy đã được xét hết mà không tìm thấy giá trị của khóa trên dãy.

3. Xây dựng thuật toán

a) Cách liệt kê

Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

Bước 2: i ← 1;

Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;

Bước 4: i ← i+1

Bước 5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc;

Bước 6: Quay lại bước 3;

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Hình 3. Sơ đồ khối thuật toán tìm kiếm tuần tự​

Bài toán 4: Tìm kiếm nhị phân

1. Xác định bài toán

- Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2,…,an và một số nguyên k.

Ví dụ: Dãy A gồm các số nguyên: 2 4 5 6 9 21 22 30 31 33. Và k = 21 (k = 25)

- Output : Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 21 trong dãy là 6 (không tìm thấy 25)

2. Ý tưởng

- Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k với số hạng ở giữa phạm vi tìm kiếm (agiữa), khi đó chỉ xảy ra một trong ba trường hợp:

+ Nếu agiữa= k thì tìm được chỉ số, kết thúc;

+ Nếu agiữa > k thì việc tìm kiếm thu hẹp chỉ xét từ ađầu (phạm vi) → agiữa - 1;

+ Nếu agiữa < k việc tìm kiếm thu hẹp chỉ xét từ agiữa + 1 → acuối (phạm vi).

- Quá trình trên được lặp lại cho đến khi tìm thấy khóa k trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.

3. Xây dựng thuật toán

a) Cách liệt kê

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

b) Sơ đồ khối

Sự khác nhau giữa bài toán trong tin học và bài toán trong toán học

Hình 4. Sơ đồ khối thuật toán tìm kiếm tuần tự​