Hãy chỉ ra tính dừng của thuật toán tìm kiếm tuần tự.
Cho trước một đây số đã được sắp xếp theo thứ tự tăng dần. Hãy đọc, quan sát và thảo luận cách làm sau đây để hiểu được thuật toán tìm kiếm nhị phân, biết được tính ưu việt của thuật toán này so với thuật toán tìm kiếm tuần tự trên một dây các phần từ đã sắp xếp.
Thuật toán tìm kiếm nhị phân thực hiện tìm kiếm một mảng đã sắp xếp bằng cách liên tục chia các khoảng tìm kiếm thành 1 nửa. Bắt đầu với một khoảng từ phần tử đầu mảng, tới cuối mảng. Nếu giá trị của phần tử cần tìm nhỏ hơn giá trị của phần từ nằm ở giữa khoảng thì thu hẹp phạm vi tìm kiếm từ đầu mảng tới giửa mảng và nguợc lại. Cứ thế tiếp tục chia phạm vi thành các nửa cho dến khi tìm thấy hoặc đã duyệt hết.
Thuật toán tìm kiếm nhị phân tỏ ra tối ưu hơn so với tìm kiếm tuyết tính ở các mảng có độ dài lớn và đã được sắp xếp. Ngược lại, tìm kiếm tuyến tính sẽ tỏ ra hiệu quả hơn khi triển khai trên các mảng nhỏ và chưa được sắp xếp.
Câu 1: Nêu công dụng và cú pháp của hàm SUM và COUNT. Cho ví dụ minh họa.
Câu 2: Có mấy loại bài toán tìm kiếm. Nêu ý tưởng của thuật toán tìm kiếm tuần tự.
Câu 3: Cho dãy số sau: 20, 13, 10, 5, 15, 27, 30. Sử dụng thuật toán tìm kiếm tuần tự, hãy tìm xem có số 15 ở trong dãy này hay không? Nếu có thì đưa ra vị trí đầu tiên tìm thấy.
Câu 4: Cho dãy số 3, 19, 7, 25, 65, 22, 30, 42, 45, 12. Sử dụng thuật toán tìm kiếm nhị phân để tìm số 40 trong dãy trên.
Cho dãy A: 2 3 4 5 6 7 8 9 và số k = 9. Theo thuật toán tìm kiếm tuần tự, chương trình sẽ dừng lại với i bằng mấy? Chỉ mik cách giải với trình bày cái.
#include <bits/stdc++.h>
using namespace std;
long long x,i,n,k;
int main()
{
cin>>n>>k;
for (i=1; i<=n; i++)
{
cout<<x;
if (x==k) cout<<i<<" ";
}
return 0;
}
Code:
A = [2,3,4,5,6,7,8,9] k = int(input('k = ')) if (k >= min(A)): i = 0 for j in range(0,len(A)): i += 1 chon = A[j] if (chon != k): print (f'i = {i}\nSố {chon} : Không đúng số cần tìm') else: if (j != len(A)-1): print (f'i = {i}\nSố {chon} : Đúng số cần tìm nhưng chưa hết dãy số') break else: print (f'i = {i}\nSố {chon} : Đúng số cần tìm và chưa hết dãy số')Kết quả:
k = 4
i = 1
Số 2 : Không đúng số cần tìm
i = 2
Số 3 : Không đúng số cần tìm
i = 3
Số 4 : Đúng số cần tìm nhưng chưa hết dãy số
Trong thuật toán tìm kiếm tuần tự với N = 10 và dãy A : 5;7;1;4;2;9;8;11;2;51; Số cần tìm là K=9 . Hỏi thuật toán sẽ dừng lại khi nào ?
a. i=5
b. i=9
c. i=6
d. i=11
Theo em, với dãy đã sắp thứ tự và cho một số x cụ thể
a) Trường hợp nào tìm kiếm tuần tự nhanh hơn tìm kiếm nhị phân?
b) Về trung bình thuật toán tìm kiếm tuần tự hay thuật toán tìm kiếm nhị phân tốt hơn?
a. Ví dụ một bài toán tìm kiếm trong thực tế: Giáo viên muốn tìm tên bạn Chung trong danh sách lớp sau:
Các bước thực hiện thuật toán tìm kiếm nhị phân cho bài toán trên:
- Bước 1: Xét vị trí ở giữa dãy, đó là vị trí số 5
- Vì sau bước 2 đã tìm thấy tên học sinh nên thuật toán kết thúc.
b) Thuật toán tìm kiếm nhị phân
- Thuật toán tìm kiếm nhị phân thu hẹp được phạm vi tìm kiếm chỉ còn tối đa là một nửa sau mỗi lần lặp. Thuật toán chia bài toán thành những bài toán nhỏ hơn giúp tăng hiệu quả tìm kiếm.
Thuật toán tuần tự
- Mô tả thuật toán phải cụ thể, rõ ràng, đầy đủ, đầu vào là gì, đầu ra là gì và chỉ rõ sự kết thúc thuật toán.
- Cần mô tả thuật toán cho tốt thì người máy hay máy tính mới hiểu đúng và thực hiện được.
- Nếu không, kết quả thực hiện thuật toán có thể không như mong đợi.
Cho dãy A: 2, 3, 4, 5, 7, 4, 8 và số k = 4. Theo thuật toán tìm kiếm tuần tự, chương trình sẽ dừng lại với i bằng mấy?
#include <bits/stdc++.h>
using namespace std;
long long x,i,n,k;
int main()
{
cin>>n>>k;
for (i=1; i<=n; i++)
{
cout<<x;
if (x==k) cout<<i<<" ";
}
return 0;
}
cho dãy số a: 2 3 4 5 6 7 8 và số k = 4 theo thuật toán tìm kiếm tuần tự, chương trình sẽ dừng lại với i bằng mấy
#include <bits/stdc++.h>
using namespace std;
long long x,i,n,k;
int main()
{
cin>>n>>k;
for (i=1; i<=n; i++)
{
cout<<x;
if (x==k) cout<<i<<" ";
}
return 0;
}
Câu 29: Cho danh sách như hình sau: 2 1 An Bình |Hòa |Liên Mai Phương|Trang |Trúc | Tước a/ Em hãy so sánh số bước thực hiện của thuật toán tìm kiếm tuần tự với số bước thực hiện của thuật toán tìm kiếm nhị phân để tìm được khách hàng tên “Hoà” trong danh sách b/ Hãy viết các bước tim kiếm nhị phân tìm khách hành tên Hoà.
mô tả thuật toán sắp xếp chọn và thuật toán tìm kiếm tuần tự
Mô phỏng thuật toán tìm kiếm tuần tự với dãy B: 1 - 5 - 7 - 6 với k = 7
Mô phỏng thuật toán tìm kiếm tuần tự với dãy B: 1 - 5 - 7 - 6 với k = 9
Làm ơn trình bày giúp mik nha
#include <bits/stdc++.h>
using namespace std;
long long x,i,n,k;
int main()
{
cin>>n>>k;
for (i=1; i<=n; i++)
{
cout<<x;
if (x==k) cout<<i<<" ";
}
return 0;
}