Binary search la gi

Binary Search Là Gì – Thụât Toán Tìm Kiếm Nhị Phân (Binary Search)

Như thế cho nên là qua những bài trước toàn bộ tất cả chúng ta đã tìm hiểu và khám phá và tìm hiểu và khám phá kha khá về những thuật toán bố trí. Lúc này toàn bộ tất cả chúng ta cùng tìm hiểu và khám phá và tìm hiểu và khám phá về một thuật toán tìm kiếm nhé. Và mình thích trình làng với bạn thuật toán BINARY SEARCH (thuật toán tìm kiếm nhị phân) Bài Viết: Binary tìm kiếm là gì

Binary search la gi

Thuật toán Binary Search (Tìm kiếm nhị phân)Thuật toán Binary Serach (Tìm kiếm nhị phân) là 1 trong những trong thuật toán tìm kiếm tuyến tính cao cấp hơn với thời điểm chạy là O(logN).Đối với những danh sách to, thuật toán này tốt nhất có thể hơn hẳn tìm kiếm tuyến tính, nhưng nó yên cầu danh sách phải được bố trí từ trước và yên cầu tài năng truy nhập bất kỳ (random access).Thuật toán tìm kiếm nhị phân thường dùng để tìm kiếm thành phần bên trong 1 danh sách đã được bố trí, ví dụ điển hình như trong một danh bạ điện thoại thông minh cảm biến lanh lợi bố trí theo tên, rất có khả năng tìm kiếm số điện thoại thông minh cảm biến lanh lợi của một người theo tên người đó.Thuật toán tìm kiếm nhị phân chạy nhanh hơn tìm kiếm tuần tự nhưng cũng tồn tại một số nhược điểm. Nó chậm hơn bảng băm.Nếu nội dung danh sách bị cân chỉnh thì danh sách phải được bố trí lại trước khi cần sử dụng tìm kiếm nhị phân.Mà thao tác này thường tốn không ít thời điểm. Vì thuật toán Binary Search ý kiến đề nghị mảng đã được bố trí. Thế cho nên vì vậy, đầu vào của toàn bộ tất cả chúng ta là 1 trong những trong mảng đã được bố trí.Cho nên vì thế, thuật toán tìm kiếm nhị phân sẽ so sánh Chi phí đích với phần tử ở ở vị trí chính giữa của mảng (mảng được chia mảng ra làm 2 Phần viền trái và phía ở ở bên phải phần tử đó)Nếu chúng không bằng nhau thì tất nhiên 50% không chứa mục tiêu sẽ ảnh hưởng tác động bỏ đi.Và việc tìm kiếm kiếm liên tục ở nửa sót lại, một lần tiếp nữa lấy phần tử ở ở vị trí chính giữa được chọn để so sánh với Chi phí đích và lặp lại điều này cho tới lúc tìm cảm nhận thấy cảm nhận Chi phí đích.Nếu tìm kiếm kết thúc với nửa sót lại trống, mục tiêu không Vị trí tọa lạc trong mảng.Dù rằng sáng kiến sáng chế rất dễ dàng và đơn giản dễ dàng, nhưng việc thực hiện thực hiện tìm kiếm nhị phân đúng cách yên cầu phải đưa ra cảnh báo đến một số điểm tinh tế và sắc sảo và tinh tế và sắc sảo về tình huống thoát và đo lường đo lường và tính toán điểm giữa của chính bản thân mình nó.Về cơ bản, quá trình thực hiện thực hiện tìm kiếm nhịxtrong mảng như sau:So sánh x với phần tử ở giữaNếu x khớp với phần tử ở ở vị trí chính giữa, toàn bộ tất cả chúng ta trả về chỉ số giữaNếu x lớn nhiều hơn thế nữa thành phần ở giữa, thì x chỉ rất có khả năng Vị trí tọa lạc trong nửa phân đoạn phía ở ở bên phải sau phần tửmid. Chính vì như thế, toàn bộ tất cả chúng ta chỉ tìm kiếm ở nữa phải của mảngNếux nhỏ hơn phần tử giữatiếp tục tìm ởnửa bên tráiLặp lại đến khi tìm ra x hoặc trả về null khi x không Vị trí tọa lạc trong mảngVí dụ, toàn bộ tất cả chúng ta có mảngANhiệm vụ: Tìm chỗ đứng đặt của số 10 trong mảng

Binary search la gi

Xem Ngay: Cmh Là Gì – định Nghĩa Cmh, Rpm Là Gì

Binary search la gi
Binary search la gi

Thường xuyên với phần phía ở ở bên phải. So sánh phần tử ở ở vị trí chính giữa (với Giữa= (Chặn phía bên dưới + Chặn trên) / 2). Ta tìm cảm nhận thấy cảm nhận Chi phí 10 ở trong phần 3.

Binary search la gi

Xem Ngay: Snippet Là Gì – Nghĩa Của Từ Snippet Từ ví dụ minh hoạ trên hình ở mục 2, toàn bộ tất cả chúng ta hãy tiến hành nó sang chương trình trong Java xem ra sao nhé. Thể Loại: Giải bày trình diễn Kiến Thức Cộng Đồng

Bài Viết: Binary Search Là Gì – Thụât Toán Tìm Kiếm Nhị Phân (Binary Search) Thể Loại: LÀ GÌ Nguồn Blog là gì: https://hethongbokhoe.com Binary Search Là Gì – Thụât Toán Tìm Kiếm Nhị Phân (Binary Search)

Ngoài am hiểu giải thuật thì có kiến thức về cấu trúc dữ liệu là điều kiện kiên quyết để trở thành một lập trình viên chuyên nghiệp. Trong bài này mình giới thiệu tới các bạn một trong những cấu trúc dữ liệu cơ bản nhất cũng như cách hoạt động của nó. Đó chính là cây tìm kiếm nhị phân – Binary Search Tree.

Đang xem: Binary search là gì

1. Cây tìm kiếm nhị phân là gì?

Cây tìm kiếm nhị phân có tên tiếng anh là Binary Search Tree (BST), là một trong những cấu trúc dữ liệu cơ bản bên cạnh queue, stack, linked-list, array. Cây tìm kiếm nhị phân là 1 dạng đồ thị nhưng các nút (node) của cây phải có những tính chất sau:

Mỗi node chỉ có thể có tối đa 2 node conGiá trị của node con bên trái phải nhỏ hơn node cha của nóGiá trị của node con bên phải lớn hơn node cha của nó

Tính chất cũng phải đúng cới các node con của 2 node con trên, nói cách khác giá trị tất cả các con bên trái của 1 node phải nhỏ hơn giá trị của node đó và giá tị tất cả các con bên phải của node đó phải lớn hơn giá tị của nó. Sự so sánh giá trị ở trên có thể là so sánh toán học, so sánh chuỗi kí tự,…

Binary search la gi

Đặc biệt trong 1 cây tìm kiếm nhị phân không cho phép 2 giá trị trùng nhau. Chính quy luật và cách sắp xếp như trên cấu trúc BST đã giúp sắp xếp dữ liệu theo một cách có trật tự, từ đó giúp người sử dụng dễ dàng hơn trong việc tổ chức dữ liệu cũng như việc tìm kiếm.

Sau đây là một vài khái niệm trong cây tìm kiếm nhị phân:

Root node (nút gốc) : node đầu tiên của cây.Leaf node (nút lá): node không có con trái và con phải.Internal node : những node không phải nút gốc cũng không phải nút lá.Level (tầng): như hình minh họa trên chúng ta có 2 cây với 3 tầng.

Về cơ bản chúng ta có 3 loại cây nhị phân:

Binary search la gi

Full binary tree: Những node không phải nút lá đều có 2 con trái và phải.

Complete binary tree: Tất cả các tầng đều chứa đầy nodes ngoại trừ tầng cuối có thể đầy hoặc không nhưng các node tầng cuối phải đc xếp lần lượt từ trái đến phải.

Perfect binary tree: tất cả nodes đều có 2 con và các nút lá ở cùng một level.

Với cây tìm kiến nhị phân chúng ta có những tác vụ cơ bản sau:

Search: Tìm kiếm.Insert: Thêm 1 node.Remove: Xóa 1 node.Traversal: Duyệt cây với 3 loại cơ bản: pre-oder traversal, In-order traversal, post-order traversal.

Bên trên là những khái niệm cơ bản về cấu trúc dữ liệu cây nói chung và cây tìm kiếm nhị phân nói riêng, sau đây chúng ta đến với cách hoạt động của các tác vụ trong cây tìm kiếm nhị phân.

2. Cây tìm kiếm nhị phân dùng để làm gì?

Để bắt đầu hoạt động tìm kiếm một giá trị x cho trước, chúng ta bắt đầu từ nút gốc (root). Nếu giá trị x nhỏ hơn giá trị của root thì chuyển đến so sánh với node con trái của root vì như đã nói ở trên mọi node bên trái root sẽ nhỏ hơn root nên nếu giá trị x có tồn tại thì chỉ có thể ở bên trái root, còn với x lớn hơn giá trị của root thì chuyển đến so sánh với node con phải của root.

Tiếp tục quá trình xét như trên với các node tiếp theo đến khi tìm được, còn nếu đến nút lá mà so sánh x không bằng giá trị nút lá thì xác nhận không tìm thấy.

Cùng xét ví dụ sau:

Binary search la gi

Trường hợp thứ nhất, ta muốn xác nhận 4 có nằm trong cây trên hay không thì các node ta sẽ đi qua là 5,3. Ban đầu bắt đầu từ 5, vì 43 nên so sánh tiếp với con phải của 3 là 4, ở đây 4 = 4 nên kết quả là có tìm thấy.

Trường hợp thứ 2, ta muốn xác nhận 7 có nằm trong cây trên không? Các node đi qua sẽ là 5,8,6 (không tìm thấy). Ban đầu chúng ta cũng bắt đầu từ root node là 5 sau đó lần lượt đến 8 và 6, cuối cùng xác nhận không tìm thấy.

Đây chính là ưu điểm của cấu trúc cây tìm kiếm nhị phân, độ phức tạp của thuật toán tìm kiếm này là O(logn), với trường hợp xấu nhất khi tất cả cá node chỉ có con phải hoặc chỉ có con trái thì độ phức tạp là O(n), ta có thể thấy rằng với trường hợp xấu nhất này cây nhị phân sẽ giống với cấu trúc mảng.

Xem thêm: Những Cuốn Sách Ngôn Tình Hay Nhất Bạn Đọc Không Thể Bỏ Qua, Những Tiểu Thuyết Ngôn Tình Hay Nhất Nên Đọc

Binary search la gi

Chúng ta nên tránh trường hợp này khi xây dựng cấu trúc dữ liệu với cây nhị phân tìm kiếm.

2.2. Insert

Khi muốn thêm một giá trị x vào cây nhị phân, ta bắt đầu tìm kiếm từ nút gốc (root), nếu giá trị x nhỏ hơn giá trị nút gốc thì tìm vị trí trống của cây con bên trái nút gốc, nếu x lớn hơn giá trj nút gốc ta tìm vị trí trống của cây con bên phải nút gốc. Trường hợp tìm được giá trị của 1 node trong cây bằng với x thì xác nhận x đã tồn tại trong cây.

Binary search la gi

Với ví dụ trong ảnh trên, ta cần thêm 4 vào trong cây nhị phân cho trước. Bắt đầu từ nút gốc là 6, vì 4 3 và có một ví trí trống phía bên phải của nút 3 vây nên đó là vị trí phù hợp để them 4 vào trong cây.

2.3. Remove

Trong hoạt động xóa 1 node của cây nhị phân chúng ta sẽ gặp phải 3 trường hợp sau:

Node cần xóa chỉ có 1 node con (trái hoặc phải)Node cần xóa không có node conNode cần xóa có cả 2 node

Với trường hợp đầu tiên node cần xóa có 1 node con, ta chỉ cần thay vị trí của node con đó với node cần xóa.

Binary search la gi

Với trường hợp node cần xóa không có node con thì chúng ta đơn giản chỉ cần xóa vị trí node đó khỏi cây.

Binary search la gi

Trường hợp cuối cùng node cần xóa có cả 2 node con. Với trường hợp này việc của ta cần làm là tìm được 1 node thế (successor) để lắp vào vị trí của node cần xóa, nói cách khác node thế phải có tính chất bé hơn tất cả node bên trái của node cần xóa và lớn hơn tất cả các node bên phải của node cần xóa.

Với cây nhị phân trong hình, khi ta muốn xóa node 5 thì node 6 chính là node thế cho node 5, node 6 còn được gọi là left-most tree, tức node trái cùng của 1 cây. Sau khi thay node 5 bằng node 6 ta cần xóa node 6 ở vị trí cũ đi, khi này ta quay trở lại trường hợp xóa 1 node có 1 node con tại vì node 6 cũ có 1 node còn là 7. Đây là kết quả sau khi xóa node 5:

Binary search la gi

Node thế (successor) có thể là left-most của cây con bên phải hoặc right-most tree của cây con bên trái. Với left-most tree được định nghĩa là con trái cùng hay giá trị nhỏ nhất trong cây nhị phân, right-most là conphair cùng, hay giá trị lớn nhất trong cây nhị phân

2.4 Pre-order traversal

Với cách duyệt này ta sẽ đi qua node cha trước sau đến node con trái rồi mới đến node con phải.

Với cây trên thứ tự các code sau khi duyệt là: 6,3,1,10,9,12.

2.5 In-order traversal

Trong cách duyệt in-order, duyệt lần lượt node con trái sau đến node cha rồi đến node con phải.

Duyệt cây nhị phân trên với inorder traversal ta được một dãy tăng dần: 1,3,6,9,10,12.

2.6 Post-order traversal

Ta duyệt lần lượt node con trái, node con phải rồi đến node cha.

Xem thêm: Hướng Dẫn Tải Âm Dương Sư Global Việt Nam, Âm Dương Sư

Với cây trên thứ tự các code sau khi duyệt là1,3,9,12,10,6.

Lời kết

Qua bài viết này mình và các bạn đã tìm hiểu về khái niệm của cây tìm kiếm nhị phân và cách hoạt động của nó. Nếu thấy bài viết có ý nghĩa bạn đọc hãy để lại đánh giá cũng như commemt những thắc mắc để mọi người cùng giải đáp. Cảm ơn bạn đọc, chúc bạn đọc thành công trên con đường học tập!