1. Trang chủ
  2. » Tất cả

Tìm kiếm &Sắp xếp

27 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 291 KB

Nội dung

Tìm kiếm &Sắp xếp CácCác giảigiải thuậtthuật tìmtìm kiếmkiếm nộinội TìmTìm kiếmkiếm tuyến tínhtuyến tính TìmTìm kiếmkiếm nhịnhị phânphân Caáu truùc Döõ lieäu Tìm kieám vaø Saép xeáp 2  Tìm kieám la[.]

Các giải thuật tìm kiếm nội Tìm kiếm tuyến tính Tìm kiếm nhị phân Nhu cầu tìm kiếm xếp liệu hệ thống thông tin   - Tìm kiếm thao tác thường thực Dữ liệu xếp => tìm nhanh => Vấn đề: - Tìm kiếm nhanh - Sắp xếp nhanh Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Các giải thuật tìm kiếm nội Bài toán: - Chọn cấu trúc liệu mảng (a) để lưu trữ dãy số a 1, a2 ,…,an - Tìm số nguyên x mảng a Có giải thuật tìm kiếm: - Tìm kiếm tuyến tính - Tìm kiếm nhị phân Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính Tìm (tìm tuyến tính)  Ý tưởng: Thuật toán tiến hành so sánh x với phần tử thứ nhất, thứ hai,… mảng a gặp phần tử có khóa cần tìm, tìm hết mảng mà không thấy x Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính   Bước 1: i = Vị trí đầu; Bước 2: Nếu a[i] = x : Tìm thấy Dừng, vị trí xuất hiện: i  Bước : i = Vị trí kế(i);// xét tiếp phần tử kế mảng  Bước 4: Nếu i >Vị trí cuối: //Hết mảng Khơng tìm thấy Dừng Ngược lại: Lặp lại Bước Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính (sequential search) Vị trí = Khóa tìm 7 13 21 15 Tìm thành cơng Số lần so sánh: Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính (Không tìm thấy) Khóa tìm 7 13 21 15 Khơng tìm thấy Số lần so sánh: Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính int LinearSearch(int a[], int n, int x) { int i=0; while(i x: //tìm x dãy aleft amid -1 right = mid - 1; Ngược lại //tìm x dãy amid +1 aright left = mid + 1; //Hết lặp Bước 3: Dừng, khơng tìm thấy Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 17 Ví dụ: Tìm nhị phân position = 10 Khóa cần tìm khơng nhỏ lớn hơn Target key 10 12 13 15 18 21 24 bottom middle top return success Số lần so sánh: Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp 18 Tìm kiếm nhị phân int BinarySearch(int a[],int n,int x ) { int left =0, right = n-1, mid; while (left tìm nhanh => Vấn đề: - Tìm kiếm nhanh - Sắp xếp nhanh Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Các giải... sánh: Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính (Không tìm thấy) Khóa tìm 7 13 21 15 Khơng tìm thấy Số lần so sánh: Cấu trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính int LinearSearch(int... trúc Dữ liệu - Tìm kiếm Sắp xếp Tìm kiếm tuyến tính Tìm (tìm tuyến tính)  Ý tưởng: Thuật toán tiến hành so sánh x với phần tử thứ nhất, thứ hai,… mảng a gặp phần tử có khóa cần tìm, tìm hết mảng

Ngày đăng: 31/12/2022, 14:08

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w