Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 6: Tìm kiếm - Nguyễn Khánh Phương
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Cấu trúc dữ liệu và giải thuật
Nguyễn Khánh Phương
Computer Science department
School of Information and Communication technology
E-mail: [email protected].vn
Nội dung khóa học
Chương 1. Các kiến thức cơ bản
Chương 2. Thuật toán đệ quy
Chương 3. Các cấu trúc dữ liệu cơ bản
Chương 4. Cây
Chương 5. Sắp xếp
Chương 6. Tìm kiếm
Chương 7. Cấu trúc dữ liệu đồ thị
2
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Chương 6. Tìm kiếm (Searching)
Nguyễn Khánh Phương
Computer Science department
School of Information and Communication technology
E-mail: [email protected].vn
Bài toán tìm kiếm (Searching problem)
Cho danh sách A gồm n phần tử a1, a2, .., an và 1 số x.
Câu hỏi: x có mặt trong danh sách A hay không?
• Nếu x có mặt trong danh sách A, hãy đưa ra vị trí xuất hiện
của x trong danh sách đã cho, nghĩa là đưa ra chỉ số i sao
cho ai = x
4
N i dung
1. Tìm kiếm tuần tự
2. Tìm kiếm nhị phân
3. Cây nhị phân tìm kiếm
4. Cây AVL
5. Bảng băm
5
N i dung
1. Tìm kiếm tuần tự
2. Tìm kiếm nhị phân
3. Cây nhị phân tìm kiếm
4. Cây AVL
5. Bảng băm
6
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
• Đầu vào:
– Cho mảng A gồm n phần tử và giá trị tìm kiếm x.
– Mảng A không cần thiết đã được sắp xếp
• Thuật toán: Bắt đầu từ phần tử đầu tiên, duyệt qua từng phần tử cho
đến khi tìm được x hoặc toàn bộ các phần tử của mảng đã được duyệt
hết
• Độ phức tạp: O(n)
-7 9 -5 2 8 3
A:
1 2 3 4 5 6
Target x = 8:
7
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=1
Array A
9 -5 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=2
Array A
-7 -5 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=3
Array A
-7 9 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=4
Array A
-7 9 -5 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=5
Array A
-7 9 -5 2 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=5
Array A
-7 9 -5 2 3
1 2 3 4 5 6 = size
target =
The target is in the list @ index = 5
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=1
Array A
9 -5 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=2
Array A
-7 -5 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=3
Array A
-7 9 2 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=4
Array A
-7 9 -5 8 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=5
Array A
-7 9 -5 2 3
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=6
Array A
-7 9 -5 2 8
1 2 3 4 5 6 = size
target =
1. Tìm kiếm tuần tự (Linear Search/Sequential search)
void linearSearch(int a[], int size, int target)
{ int i;
for (i = 1; i <= size; i++)
if (a[i] == target) break;
if (i <= size)
printf(“The target is in the list @ index = %d”,i);
else
printf(“The target is NOT in the list”);
}
i=7
Array A
-7 9 -5 2 8 3
1 2 3 4 5 6 = size
target =
The target is NOT in the list
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 6: Tìm kiếm - Nguyễn Khánh Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_cau_truc_du_lieu_va_thuat_toan_chuong_6_tim_kiem_n.pdf

