cho dãy số 1,3,4,8,9,7,6,4 . em hãy mô tả thuật toán tìm số 6 trong dãy số đó theo ngôn ngữ tự nhiên và sơ đồ khối a) thuật toán tìm kiếm tuần tự b) thuật toán tìm kiếm nhị phân
Quảng cáo
3 câu trả lời 52
a) Thuật toán tìm kiếm tuần tự
Mô tả bằng ngôn ngữ tự nhiên
Bước 1: Nhập dãy số: 1, 3, 4, 8, 9, 7, 6, 4.
Bước 2: So sánh số cần tìm là 6 với từng phần tử trong dãy theo thứ tự từ đầu đến cuối.
So sánh với 1 → không đúng
So sánh với 3 → không đúng
So sánh với 4 → không đúng
So sánh với 8 → không đúng
So sánh với 9 → không đúng
So sánh với 7 → không đúng
So sánh với 6 → đúng
Bước 3: Thông báo tìm thấy số 6 ở vị trí thứ 7 trong dãy.
Bước 4: Kết thúc.
Sơ đồ khối tìm kiếm tuần tự
Bắt đầu
↓
Nhập dãy số và số cần tìm = 6
↓
i = 1
↓
So sánh ai với 6
↓
ai = 6 ?
┌──────────────┐
Có Không
↓ ↓
Thông báo i = i + 1
tìm thấy ↓
↓ i ≤ n ?
Kết thúc ┌──────────┐
Có Không
↓ ↓
Quay lại Thông báo
so sánh không tìm thấy
↓
Kết thúc
b) Thuật toán tìm kiếm nhị phân
Mô tả bằng ngôn ngữ tự nhiên
Trước hết sắp xếp dãy theo thứ tự tăng dần:
Bước 1: Chọn phần tử ở giữa dãy.
Phần tử giữa là: 4
So sánh:
→ tìm ở nửa bên phải.
Bước 2: Xét dãy: 6,7,8,9
Phần tử giữa là: 7
→ tìm ở nửa bên trái.
Bước 3: Còn số:
6→ tìm thấy số 6.
Bước 4: Kết thúc.
↓
Sắp xếp dãy tăng dần
↓
L = 1 ; R = n
↓
L ≤ R ?
┌────────────┐
Không Có
↓ ↓
Không tìm Mid = (L+R)/2
thấy ↓
↓ aMid = 6 ?
Kết thúc ┌─────────────┐
Có Không
↓ ↓
Thông báo 6 > aMid ?
tìm thấy ┌───────────┐
↓ Có Không
Kết thúc ↓ ↓
L = Mid+1 R = Mid-1
↓
Quay lại
- Bắt đầu: Xét số đầu tiên trong dãy (vị trí thứ 1).
- So sánh: So sánh số đang xét với số cần tìm (số 6).
- Kiểm tra:
- Nếu số đang xét bằng 6: Thông báo tìm thấy ở vị trí này và Kết thúc.
- Nếu không bằng 6: Chuyển sang số kế tiếp.
- Lặp lại: Quay lại bước 2 cho đến khi tìm thấy hoặc hết dãy số.
- Kết thúc: Nếu đã xem hết dãy mà không thấy số 6, thông báo không tìm thấy.
- Bắt đầu [Gán i = 1] i > 8? (Sai) A[i] = 6? (Đúng) Thông báo tìm thấy Kết thúc.
- (Nếu A[i] = 6 Sai) [i = i + 1] Quay lại bước kiểm tra i > 8.
- Thiết lập: Chọn phạm vi tìm kiếm từ đầu dãy (Trái) đến cuối dãy (Phải).
- Tìm vị trí giữa: Tính chỉ số nằm giữa phạm vi: .
- So sánh:
- Nếu số ở giữa bằng 6: Thông báo tìm thấy và Kết thúc.
- Nếu số ở giữa nhỏ hơn 6: Thu hẹp phạm vi, chỉ tìm ở nửa bên phải (Trái = Giữa + 1).
- Nếu số ở giữa lớn hơn 6: Thu hẹp phạm vi, chỉ tìm ở nửa bên trái (Phải = Giữa - 1).
- Lặp lại: Quay lại bước 2 cho đến khi tìm thấy hoặc phạm vi Trái > Phải (không tìm thấy).
- Bắt đầu
[Trái=1, Phải=8]
Trái > Phải? (Sai)
[Giữa = (Trái+Phải)/2]
A[Giữa] = 6?
- (Nếu Đúng) Thông báo tìm thấy Kết thúc.
- (Nếu Sai) A[Giữa] < 6? (Đúng: Trái = Giữa + 1) / (Sai: Phải = Giữa - 1) Quay lại bước Trái > Phải.
- Tuần tự: Chậm hơn nhưng dùng được cho mọi dãy số. Trong dãy trên, nó sẽ tìm thấy số 6 ở vị trí thứ 7.
- Nhị phân: Rất nhanh nhưng bắt buộc phải sắp xếp số trước khi tìm. Sau khi sắp xếp, nó sẽ tìm thấy số 6 ở vị trí thứ 5 (trong dãy mới).
Quảng cáo
Bạn cần hỏi gì?
Câu hỏi hot cùng chủ đề
-
Đã trả lời bởi chuyên gia
22383 -
Đã trả lời bởi chuyên gia
19640 -
Đã trả lời bởi chuyên gia
14112 -
Đã trả lời bởi chuyên gia
12102 -
Đã trả lời bởi chuyên gia
11066
