Professional Documents
Culture Documents
Untitled
Untitled
Untitled
1
28/04/22
k 8 10 2 5 7 4 1
1 2 3 4 n=7
x=5
2
28/04/22
Function sequenceSearch(k,n,x)
1. { Khởi tạo }
i:=1; k[n+1]:=x;
2. {Tìm kiếm trong dãy}
While k[i] <> x Do i:=i+1;
3. { Trả về kết quả tìm kiếm }
If i=n+1 then Return(0) Esle Return(i);
Return
3
28/04/22
4
28/04/22
k 1 3 5 10 17 24 31
1 2 3 4 5 6 n=7
x=3
m = (1+7) div 2 = 4
k[m] = 10
* Giải thuật:
Cho dãy k gồm n khoá, sắp xếp theo thứ tự tăng dần. Tìm
khoá có giá trị =x.
Nếu tìm thấy thì trả về vị trí của khóa, nếu không tìm thấy
thì trả về 0.
Dùng biến L, R, m: chỉ số đầu, chỉ số cuối, chỉ số giữa của
dãy khoá k.
10
5
28/04/22
Function binarySearch(k,n,x)
1. {Khởi tạo}
L := 1; R := n;
2. {Tìm kiếm}
While L <= R Do
Begin
{Tính chỉ số giữa}
m := (L+R) div 2;
{So sánh}
If x < k[m] then R := m-1
Else IF x > k[m] then L := m+1
Else Return (m);
End;
3. {Không tìm thấy}
Return (0)
11
12
6
28/04/22
13
14
7
28/04/22
15
16
8
28/04/22
17
x = 37 q
18
9
28/04/22
19
20
10
28/04/22
O(log2(n))
21
22
11
28/04/22
Câu 1
• Viết giả mã BST
• Viết giả mã tạo cây nhị phân tìm kiếm
Procedure createBST(Var T; k, n)
For i:=1 to n do BST(T, k[i]);
Return
Ví dụ: Áp dụng vẽ cây nhị phân cho dãy
khóa sau: 8 10 19 3 21 7 5 12
23
Dãy khóa k: 8 10 19 3 21 7 5 12
T 1
8
2
4
3 10
3
6 19
7
8 5
7 12 21
5
inOrder: 3 5 7 8 10 12 19 21
24
12
28/04/22
Bài tập
• Viết lệnh C++ cài đặt cấu trúc lưu trữ của
cây nhị phân tìm kiếm có khóa là số
nguyên.
25
26
13