Chương 2: Một số giải thuật cơ bản
Số trang: 89
Loại file: pdf
Dung lượng: 10.33 MB
Lượt xem: 15
Lượt tải: 0
Xem trước 9 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thuật toán tiến hành so sánh x lần lượt với các phần tử thứ 1, thứ 2,… của mảng a cho đến khi gặp phần tử có khóa cần tìm, hoặc đã tìm hết mảng mà không thấy x. Ví dụ: Cho dãy số sau:5 3 6 8 9 Tìm phần tử có giá trị x = 9, x= 10. Sắp xếp là quá trình xử lý một danh sách các phần tử để đặtchúng theo một thứ tự thỏa mãn một tiêu chuẩn nào đó dựa trênnội dung thông tin lưu trữ tại mỗi phần tử....
Nội dung trích xuất từ tài liệu:
Chương 2: Một số giải thuật cơ bảnCẤU TRÚC DỮ LIỆU Chương 2. MỘT SỐ GIẢI THUẬT CƠ BẢNCreated by Bich Ngan 02/2012 1. Giải thuật tìm kiếm trên mảng số21.1. Tìm kiếm tuyến tính (Linear Search) Ý tưởng: Thuật toán tiến hành so sánh x lần lượt với các phần tử thứ 1, thứ 2,… của mảng a cho đến khi gặp phần tử có khóa cần tìm, hoặc đã tìm hết mảng mà không thấy x. Ví dụ: Cho dãy số sau: 5 3 6 8 9 1 2 Tìm phần tử có giá trị x = 9, x= 10 Created by Bich Ngan3Minh họa ví dụXét dãy số A có 7 phần tử: 5 3 6 8 9 1 2Tìm x = 9 Tìm Vị trí trong dãy (i) 0 1 … 4 được x=9 tại Giá trị a[i] 5 3 … 9 vị trí 4. Kết quả so sánh 5!= 9 3!=9 … 9= = 9 a[i] và x Kết thúc quá trình Created by Bich Ngan4Minh họa ví dụXét dãy số A có 7 phần tử: 5 3 6 8 9 1 2Tìm x = 10 i=7, a[i] Vị trí trong dãy không 0 1 … 6 7 (i) tồn tại. Không Giá trị a[i] 5 3 … 2 null có 10 Kết quả so sánh trong 5!= 10 3!=10 … 2!= 10 a[i] và x dãy A. Kết thúc quá trình Created by Bich Ngan51.1. Tìm kiếm tuyến tính (Linear Search) (tt) Cài đặt int LinearSearch (int a[], int n, int x) { for(int i=0;i1.2. Thuật toán tìm kiếm nhị phân (Binary Search) Ý tưởng Giả sử dãy số a đã có thứ tự tăng. Tại mỗi bước tiến hành so sánh x với phần tử nằm vị trí giữa của dãy tìm kiếm hiện hành, dựa vào kết quả so sánh này để quyết định giới hạn dãy tìm ở bước kế tiếp là nửa trên hay nửa duới của dãy tìm kiếm hiện hành. Ví dụ: Cho dãy a có 7 phần tử: 3 4 68 9 10 13 Tìm x = 10 và x = 2 Created by Bich Nga7Minh họa ví dụ Cho dãy số a: 3 4 68 9 10 13 tìm x= 10. Kết quả Mid = Tìm left right a[mid] so sánh x Bước [(left+right)/2] được và a[mid] x=10 tại vị trí 5. 1 0 6 [(0+6)/2] = 3 8 8Minh họa ví dụ Cho dãy số a: -1 0 68 9 10 13 tìm x= 2. Mid = Kết quả so sánh left right a[mid]Bước [(left+right)/2] x và a[mid] 1 0 6 [(0+6)/2] = 3 8 8>2 2 0 Right = mid – 1 [(0+2)/2] = 1 0 02 = 1+1 = 2 4 2 Mid-1 = 2-1=1 ? Tại bước 4 có left>right -> vô lý. Kết luận không có x = 2 trong a Created by Bich Ngan9 1.2. Tìm kiếm nhị phân (Binary Search) (tt) Cài đặt int BinarySearch (int a[], int n, int x) { int left = 0, right = n-1; while(left Bài tập lý thuyết Cho dãy số sau: 79 13 17 27 30 31 35 38 40 Tìm x= 17, x=35, x=40 a. Tìm x = 23 ...
Nội dung trích xuất từ tài liệu:
Chương 2: Một số giải thuật cơ bảnCẤU TRÚC DỮ LIỆU Chương 2. MỘT SỐ GIẢI THUẬT CƠ BẢNCreated by Bich Ngan 02/2012 1. Giải thuật tìm kiếm trên mảng số21.1. Tìm kiếm tuyến tính (Linear Search) Ý tưởng: Thuật toán tiến hành so sánh x lần lượt với các phần tử thứ 1, thứ 2,… của mảng a cho đến khi gặp phần tử có khóa cần tìm, hoặc đã tìm hết mảng mà không thấy x. Ví dụ: Cho dãy số sau: 5 3 6 8 9 1 2 Tìm phần tử có giá trị x = 9, x= 10 Created by Bich Ngan3Minh họa ví dụXét dãy số A có 7 phần tử: 5 3 6 8 9 1 2Tìm x = 9 Tìm Vị trí trong dãy (i) 0 1 … 4 được x=9 tại Giá trị a[i] 5 3 … 9 vị trí 4. Kết quả so sánh 5!= 9 3!=9 … 9= = 9 a[i] và x Kết thúc quá trình Created by Bich Ngan4Minh họa ví dụXét dãy số A có 7 phần tử: 5 3 6 8 9 1 2Tìm x = 10 i=7, a[i] Vị trí trong dãy không 0 1 … 6 7 (i) tồn tại. Không Giá trị a[i] 5 3 … 2 null có 10 Kết quả so sánh trong 5!= 10 3!=10 … 2!= 10 a[i] và x dãy A. Kết thúc quá trình Created by Bich Ngan51.1. Tìm kiếm tuyến tính (Linear Search) (tt) Cài đặt int LinearSearch (int a[], int n, int x) { for(int i=0;i1.2. Thuật toán tìm kiếm nhị phân (Binary Search) Ý tưởng Giả sử dãy số a đã có thứ tự tăng. Tại mỗi bước tiến hành so sánh x với phần tử nằm vị trí giữa của dãy tìm kiếm hiện hành, dựa vào kết quả so sánh này để quyết định giới hạn dãy tìm ở bước kế tiếp là nửa trên hay nửa duới của dãy tìm kiếm hiện hành. Ví dụ: Cho dãy a có 7 phần tử: 3 4 68 9 10 13 Tìm x = 10 và x = 2 Created by Bich Nga7Minh họa ví dụ Cho dãy số a: 3 4 68 9 10 13 tìm x= 10. Kết quả Mid = Tìm left right a[mid] so sánh x Bước [(left+right)/2] được và a[mid] x=10 tại vị trí 5. 1 0 6 [(0+6)/2] = 3 8 8Minh họa ví dụ Cho dãy số a: -1 0 68 9 10 13 tìm x= 2. Mid = Kết quả so sánh left right a[mid]Bước [(left+right)/2] x và a[mid] 1 0 6 [(0+6)/2] = 3 8 8>2 2 0 Right = mid – 1 [(0+2)/2] = 1 0 02 = 1+1 = 2 4 2 Mid-1 = 2-1=1 ? Tại bước 4 có left>right -> vô lý. Kết luận không có x = 2 trong a Created by Bich Ngan9 1.2. Tìm kiếm nhị phân (Binary Search) (tt) Cài đặt int BinarySearch (int a[], int n, int x) { int left = 0, right = n-1; while(left Bài tập lý thuyết Cho dãy số sau: 79 13 17 27 30 31 35 38 40 Tìm x= 17, x=35, x=40 a. Tìm x = 23 ...
Tìm kiếm theo từ khóa liên quan:
hệ thống thông tin hệ thống dữ liệu kỹ năng máy tính quản trị dữ liệu cơ sở dữ liệu cấu trúc dữ liệuGợi ý tài liệu liên quan:
-
62 trang 397 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 373 6 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 307 0 0 -
Bài tập thực hành môn Phân tích thiết kế hệ thống thông tin
6 trang 300 0 0 -
Đáp án đề thi học kỳ 2 môn cơ sở dữ liệu
3 trang 298 1 0 -
Làm việc với Read Only Domain Controllers
20 trang 287 0 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 284 0 0 -
13 trang 282 0 0
-
PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG HỆ THỐNG ĐẶT VÉ TÀU ONLINE
43 trang 280 2 0 -
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 276 0 0