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
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;
}
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.
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;
}
Cho dãy A = [1, 91, 45, 23, 67, 9, 10, 47, 90, 46, 86]. Thuật toán tìm kiếm tuần tự cần thực hiện bao nhiêu lần duyệt để tìm ra phần tử có giá trị bằng 47 trong dãy?
Trong trường hợp này, chúng ta cần tìm phần tử có giá trị là 47 trong dãy A = [1, 91, 45, 23, 67, 9, 10, 47, 90, 46, 86]. Ta sẽ thực hiện duyệt từng phần tử trong dãy này để tìm kiếm phần tử có giá trị là 47.
Dãy A có tổng cộng 11 phần tử, và trong trường hợp xấu nhất, phần tử cần tìm là phần tử cuối cùng của dãy. Vì vậy, trong trường hợp xấu nhất, ta cần duyệt qua toàn bộ dãy A để tìm thấy phần tử có giá trị là 47.
Vậy, số lần duyệt cần thực hiện là 7 lần.
Mô phỏng thuật toán tìm kiếm tuần tự với bộ dữ liệu: n = 10; k = 21;
Mô phỏng thuật toán
A | -1 | 5 | 91 | 82 | -22 | -31 | 45 | 67 | 1 | 55 | |
---|---|---|---|---|---|---|---|---|---|---|---|
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
Kết quả: Dãy A không có số hạng có giá trị bằng k = 21
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ố
Cho dãy A = {0, 4, 9, 10, 12,14, 17, 18, 20, 31, 34, 67}. Với thuật toán tìm kiếm tuần tự, cần duyệt bao nhiêu phần tử để tìm ra phần từ có giá trị bằng 34?
Với thuật toán tìm kiếm tuần tự, cần duyệt 10 phần tử để tìm ra phần từ có giá trị bằng 34.