Thuật toán tìm kiếm nhị phân

Thuật tân oán kiếm tìm kiếm nhị phân Binary Search C++. Cách cài đặt thuật tân oán, ưu điểm yếu kém, độ phức tạp. So sánh kiếm tìm tìm nhị phân cùng với tìm kiếm tuần từ bỏ. Cùng mình tò mò toàn bộ vào nội dung bài viết này nhé.

You watching: Thuật toán tìm kiếm nhị phân


1. Thuật toán tìm kiếm

Trong lập trình các bạn sẽ liên tiếp gặp cần bài toán thù search kiếm. Tìm tìm gọi theo như đúng nghĩa đen của chính nó là họ đi tìm kiếm một vật dụng gì đó. Tất cả những vẻ ngoài tra cứu kiếm nhỏng tra google, kiếm tìm trên trang web, áp dụng, tra cứu giúp tên . . . phần đa áp dụng thuật toán thù tra cứu tìm.

Trong thiết kế search tìm dùng làm tìm địa điểm, truy tìm vấn bộ phận yêu cầu kiếm tìm vào tài liệu giải pháp xử lý từ kia tiến hành những thao tác làm việc quan trọng. Vì nó được thực hiện không hề ít nên đó là một trong những những thuật toán cực kì đặc trưng với mỗi thiết kế viên.

See more: Cách Tính Lực Đàn Hồi Của Con Lắc Lò Xo, Công Thức Tính Lực Đàn Hồi Của Lò Xo

quý khách sẽ dễ dãi nghe thấy 5 dạng thuật toán tra cứu tìm phổ biến tuyệt nhất kia là:

Tìm tìm tuyến đường tính – Sequential tìm kiếm giỏi còn gọi là Linear searchTìm kiếm nhị phân – Binary searchThuật toán Ternary SearchThuật tân oán Jump SearchThuật toán thù Exponential Search

Hai thuật tân oán mình liệt kê đầu thường xuyên được nói đến những nhiều hơn thế nữa. Trong đó thuật toán thù kiếm tìm tìm tuyến tính là thuật toán thù đơn giản dễ dàng độc nhất vô nhị và được thực hiện những độc nhất vày nó đơn giản dễ dàng và thực sự dễ dàng hình dung. Tuy nhiên vận tốc, sự buổi tối ưu của chính nó nằm trong vào nhiều loại tốt tốt nhất, đấy là nguyên nhân chúng ta nên đồ vật thêm một số thuật toán thù tìm kiếm tìm khác.

Bài tân oán tra cứu kiếm trong nội dung bài viết này mình nêu ra nhỏng sau: Cho mảng arr<> sẽ bố trí bao gồm n phần tử, viết hàm tìm kiếm kiếm trả về chỉ số của phần tử có mức giá trị x vào arr<>. (tìm kiếm địa chỉ của x vào mảng)

2. Thuật toán thù tra cứu kiếm nhị phân – Binary search

Thuật tân oán kiếm tìm tìm nhị phân (Binary search) tốt có cách gọi khác là thuật toán thù search tìm phân chia đôi, kiếm tìm kiếm nửa khoảng, binary chop là thuật toán thù tất cả áp dụng tính chất phân tách để trị. Ta sẽ triển khai chia đôi mảng ban đầu, nếu phần tử trung tâm lớn hơn, hoặc nhỏ tuổi hơn thành phần đề xuất kiếm tìm ta vẫn thu bé nhỏ miền đề nghị tìm về nhị đầu khớp ứng. Tiếp tục có tác dụng điều này cho đến lúc hết mảng hoặc đưa ra địa chỉ phần tử đề xuất tìm.

See more: Giải Toán 7 Bài 9: Tính Chất Ba Đường Cao Của Tam Giác ), Bài 9 : Tính Chất Ba Đường Cao Của Tam Giác


*

Ý tưởng thuật toán tra cứu tìm nhị phân:

Chia mảng ban đầu thành 2 phần, rước mid làm cho phần tử giữa: mid = (left + high) /2;Nếu arr == x thì trả về địa chỉ của midNếu x Nếu x > arr từ bây giờ x sẻ sống bên nên mid. Đệ quy thuật tân oán search xsinh sống mảng bên phảiNếu không có thành phần thỏa mãn nhu cầu ta trả về -1

Cài đặt thuật tân oán bằng C/C++:

int binary_Search(int arr<>, int low, int high, int x) if (high >= low) // Trong Khi không xét không còn int mid = low + (high - low) / 2; // Tương đương mid = (low + high)/2; if (arr == x) // Nếu bộ phận mid bởi phần tử kiếm tìm tìm thì giới hạn return mid; if (arr > x) // Nếu x nhỏ dại rộng mid, đệ quy search phía bên trái return binary_Search(arr, low, mid - 1, x); return binary_Search(arr, mid + 1, high, x); // Nếu x > mid ta đệ quy tìm kiếm nửa mặt đề xuất return -1; // Nếu không tìm thấy ta trả về -1; Đánh giá bán thuật toán tìm kiếm kiếm nhị phân:

Độ phức tạp trung bình: O (logn)Độ tinh vi tốt nhất: O(1)Độ phức hợp ko gian: O(1)

3. So sánh kiếm tìm tìm nhị phân cùng với tìm tìm tuyến tính

Khác với search kiếm tuyến đường tính – Linear sort đang thực hiện vòng lặp chăm sóc từ trên đầu mảng thứu tự về phía cuối mảng cho đến khi tìm kiếm được phần tử đề nghị tìm thì sẽ dừng lại. Để dễ nắm bắt, chúng ta coi hình minc họa so sánh Binary search với Sequential bên dưới.


*
So sánh tìm kiếm kiếm nhị phân cùng search kiếm tuyến tính

Một số ưu yếu điểm thân nhì thuật toán cùng với nhau:

Tìm tìm nhị phân chỉ chuyển động trên mảng sẽ thu xếp tất cả thứ tựTìm kiếm nhị phân phù hợp với mảng tất cả độ dài lớnThuật toán tìm kiếm nhị phân gồm hiệu xuất tốt hơnTìm tìm tuần tự phù hợp cùng với mảng bé dại với chưa sắp xếp.. . .

Hình như còn có tương đối nhiều ưu yếu điểm không giống nữa

Lời kết: Cảm ơn bạn sẽ đọc đến những dòng sau cùng trên nội dung bài viết của mình. Nếu tất cả thắc mắc gì chớ hổ thẹn để lại comment xuống phía dưới bài viết nhé! Chúc bạn thành công!


Chuyên mục: Blog