Làm thế nào để bạn viết một tìm kiếm nhị phân đệ quy trong python?

Chương trình lấy một danh sách và khóa làm đầu vào và tìm chỉ mục của khóa trong danh sách bằng tìm kiếm nhị phân

Giải pháp vấn đề

1. Tạo một hàm binary_search lấy một danh sách và các biến bắt đầu, kết thúc và khóa làm đối số. Hàm tìm kiếm khóa trong phạm vi [bắt đầu… kết thúc – 1].
2. Trường hợp cơ sở bao gồm kiểm tra xem bắt đầu có nhỏ hơn kết thúc hay không. Nếu không, -1 được trả về.
3. mid được tính là sàn của mức trung bình của đầu và cuối.
4. Nếu phần tử tại chỉ số mid nhỏ hơn key, thì binary_search được gọi lại với start=mid + 1 và nếu nó lớn hơn key, nó được gọi với end=mid. Mặt khác, mid được trả về dưới dạng chỉ mục của phần tử được tìm thấy.

Chương trình/Mã nguồn

Đây là mã nguồn của chương trình Python để triển khai tìm kiếm nhị phân bằng đệ quy. Đầu ra chương trình được hiển thị dưới đây

Đệ quy có nghĩa là giải quyết vấn đề bằng cách chia một vấn đề phức tạp thành các vấn đề nhỏ hơn và sau đó giải quyết nó từng bước. Trong bài viết này, tôi sẽ hướng dẫn bạn cách triển khai tìm kiếm nhị phân đệ quy bằng Python, nghĩa là triển khai thuật toán tìm kiếm nhị phân bằng phương pháp đệ quy

Tìm kiếm nhị phân đệ quy

Tìm kiếm nhị phân có nghĩa là tìm một mục trong một mảng đã sắp xếp bằng cách chia khoảng thời gian tìm kiếm thành hai nửa liên tục và tìm kiếm nhị phân đệ quy có nghĩa là chia nhỏ toàn bộ quá trình tìm kiếm nhị phân thành các vấn đề nhỏ hơn. Nói một cách đơn giản, giải pháp đệ quy cho tìm kiếm nhị phân được gọi là tìm kiếm nhị phân đệ quy

Dưới đây là các thuộc tính mà tất cả các giải pháp đệ quy phải đáp ứng

  1. Một giải pháp đệ quy phải có trường hợp cơ sở
  2. Một giải pháp đệ quy phải có trường hợp đệ quy
  3. Một giải pháp đệ quy phải đạt được tiến bộ đối với trường hợp cơ sở

Trường hợp cơ sở là trường hợp cuối cùng đại diện cho phân mục nhỏ nhất của một vấn đề phức tạp. Như vậy theo tính chất đệ quy ở trên, để thực hiện tìm kiếm nhị phân đệ quy, thuật toán của chúng ta phải có trường hợp cơ sở và trường hợp đệ quy và trường hợp đệ quy phải tiến tới trường hợp cơ sở nếu không thuật toán sẽ không bao giờ dừng và sẽ dẫn đến một vòng lặp vô hạn

Tìm kiếm nhị phân đệ quy bằng Python

Thuật toán tìm kiếm nhị phân cải thiện thời gian tìm kiếm cần thiết để định vị một phần tử trong một mảng được sắp xếp. Thông thường, một cách tiếp cận lặp đi lặp lại được áp dụng để triển khai thuật toán tìm kiếm nhị phân, nhưng chúng ta cũng có thể triển khai nó theo cách đệ quy bằng cách triển khai nó trong các phiên bản nhỏ hơn

Để thực hiện thuật toán tìm kiếm nhị phân đệ quy, trước tiên chúng ta phải tìm mục tiêu theo thứ tự đã sắp xếp, giá trị ở giữa được kiểm tra để xác định xem đó có phải là mục tiêu không. Nếu giá trị ở giữa không phải là mục tiêu, thì chuỗi được chia làm đôi, sau đó nửa đầu hoặc nửa sau được kiểm tra để tìm giá trị đích bằng cách xem phần tử ở giữa. Đây là cách triển khai tìm kiếm nhị phân đệ quy bằng Python

Xem ý chính này trên GitHub

Bản tóm tắt

Đệ quy là một công cụ rất mạnh để lập trình và giải quyết vấn đề. Nó có thể được sử dụng để giải và thực hiện một loạt các thuật toán để giải các bài toán lặp cơ bản đến các bài toán quay lui nâng cao. Trong bài viết này, chúng tôi đã khám phá cách triển khai thuật toán tìm kiếm nhị phân đệ quy bằng ngôn ngữ lập trình Python

Tôi hy vọng bạn thích bài viết này về cách triển khai tìm kiếm nhị phân đệ quy bằng Python. Vui lòng đặt câu hỏi có giá trị của bạn trong phần bình luận bên dưới

Trong Tìm kiếm nhị phân, chúng tôi chia một tập hợp các phần tử thành hai nửa để giảm bớt sự so sánh khi tìm một phần tử. Nhưng có một điều kiện, tôi. e. , các phần tử trong mảng bắt buộc phải được sắp xếp trước. Bài viết này sẽ giải thích khái niệm về Tìm kiếm nhị phân cùng với việc triển khai Python Tìm kiếm nhị phân. Sẽ có các ví dụ cùng với các đoạn mã Python và kết quả đầu ra để hiểu rõ hơn

Mục lục

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

Thuật toán tìm kiếm nhị phân tìm chỉ mục của một phần tử cụ thể trong danh sách. Đây là một trong những thuật toán nhanh nhất và phổ biến nhất. Các phần tử trong danh sách phải được sắp xếp để Thuật toán tìm kiếm nhị phân hoạt động

So với tìm kiếm tuyến tính, tìm kiếm nhị phân là thuật toán tìm kiếm hiệu quả hơn trong việc tìm kiếm chỉ mục của phần tử vì chúng ta không cần tìm kiếm từng chỉ mục của danh sách

Chúng tôi có thể tóm tắt hoạt động hoàn chỉnh của Thuật toán tìm kiếm nhị phân trong các bước sau

  • Trong mảng đã sắp xếp, tìm phần tử ở giữa
  • So sánh x với phần tử ở giữa
  • Nếu x bằng phần tử ở giữa, thì chỉ số ở giữa được trả về. Nếu không, x sẽ được so sánh với mục ở giữa
  • Ngược lại, nếu x lớn hơn mục ở giữa, thì nó sẽ được so sánh với các phần tử bên phải của chỉ mục
  • Ngược lại, nếu x nhỏ hơn phần tử ở giữa, thì x sẽ chỉ được so sánh với các phần tử bên trái của chỉ mục
  • Chúng tôi sẽ chọn một trong hai thuật toán để chạy cho nửa bên phải của danh sách hoặc nửa bên trái của danh sách các mục

Tìm kiếm nhị phân là một thuật toán hiệu quả. Nó có hai phương pháp để tìm vị trí của các phần tử. Hãy thảo luận điều này với sự trợ giúp của các ví dụ

1. Phương pháp đệ quy

Phương pháp đệ quy tuân theo cách tiếp cận chia để trị. Trong Tìm kiếm nhị phân đệ quy, một hàm gọi chính nó lặp đi lặp lại cho đến khi tìm thấy một phần tử trong danh sách

Thí dụ

def binary_search[array, low, high, x]:
 
    
    if high >= low:
        mid = [high + low] // 2
 
        
        if array[mid] == x:
            return mid
 
        elif array[mid] > x:
            return binary_search[array, low, mid - 1, x]
 
        else:
            return binary_search[array, mid + 1, high, x]
 
    else:
        return -1

array = [ 2, 4, 6, 8, 20, 40, 60, 80]
x = 20

result = binary_search[array, 0, len[array]-1, x]
 
if result != -1:
    print["The index of the Element is", str[result]]
else:
    print["This element is not present in your Array."]
 

đầu ra

2. Phương pháp lặp

Chúng tôi sử dụng Vòng lặp While trong phương thức Lặp lại để tìm vị trí chỉ mục của một phần tử. Một tập hợp các câu lệnh sẽ được lặp lại nhiều lần trong quá trình triển khai Lặp lại

Thí dụ

def binary_search[array, x]:
    low = 0
    high = len[array] - 1
    mid = 0
 
    while low  x:
            high = mid - 1
 
        else:
            return mid
 
    return -1
 
array = [ 2, 4, 6, 8, 20, 40, 60, 80 ]
x = 20
 

result = binary_search[array, x]
 
if result != -1:
    print["The index of the element is", str[result]]
else:
    print["We do not have this element in the Array."]
 

đầu ra

phức tạp

Trong các khái niệm về Tìm kiếm nhị phân, chúng tôi có hai loại Độ phức tạp tìm kiếm nhị phân

  • Ô[1]. Nó được gọi là độ phức tạp trường hợp tốt nhất khi so sánh đầu tiên bằng với mục đó mà chúng tôi đang tìm kiếm
  • O[logn]. Nó được gọi là độ phức tạp trung bình và trường hợp xấu nhất vì phải mất khá nhiều thời gian với thời gian logarit để tìm kiếm mục thông qua danh sách

Sự kết luận

Chúng ta đã thảo luận ở trên, Tìm kiếm nhị phân là một kỹ thuật hiệu quả để tìm chỉ mục của một phần tử trong danh sách hoặc mảng. Có các ví dụ để phân biệt Tìm kiếm nhị phân đệ quy và Tìm kiếm nhị phân lặp lại. Tôi hy vọng nó đã giúp bạn hiểu đúng

Tìm kiếm nhị phân đệ quy là gì?

Tìm kiếm nhị phân đệ quy . Việc tìm kiếm hoàn thành khi chúng tôi tìm thấy khóa hoặc hai con trỏ gặp nhau. utilizes a helper function to keep track of pointers to the section of the list we are currently examining. The search either completes when we find the key, or the two pointers meet.

Cú pháp hàm đệ quy trong Python là gì?

Python cũng chấp nhận đệ quy hàm, nghĩa là một hàm đã xác định có thể gọi chính nó . Đệ quy là một khái niệm toán học và lập trình phổ biến. Nó có nghĩa là một chức năng gọi chính nó. Điều này có lợi là bạn có thể lặp qua dữ liệu để đạt được kết quả.

Tìm kiếm nhị phân được thực hiện như thế nào trong Python?

Cách hoạt động của tìm kiếm nhị phân – Chia để trị .
Thuật toán chia danh sách thành hai phần. bên trái và bên phải, được phân tách bằng phần tử ở giữa
Nó tạo một biến để lưu trữ giá trị của mục cần tìm kiếm
Nó chọn ra phần tử ở giữa và so sánh nó với phần tử cần tìm

Tìm kiếm nhị phân Giải thích bằng ví dụ trong Python là gì?

Tìm kiếm nhị phân trong python là kỹ thuật tìm kiếm hoạt động trên một mảng được sắp xếp . Thay vì so sánh từng phần tử của mảng với phần tử được yêu cầu, thuật toán tìm kiếm nhị phân liên tục chia mảng thành các mảng con rồi tìm kiếm phần tử được yêu cầu trong mảng con.

Chủ Đề