Bạn có thể tìm kiếm nhị phân một danh sách được liên kết không?
Bạn có thể tìm kiếm nhị phân một danh sách được liên kết không?

Video: Bạn có thể tìm kiếm nhị phân một danh sách được liên kết không?

Video: Bạn có thể tìm kiếm nhị phân một danh sách được liên kết không?
Video: NMLT - Thuật toán Tìm kiếm nhị phân (Binary Search) 2024, Tháng mười một
Anonim

Đúng, Tìm kiếm nhị phân có thể trên danh sách liên kết nếu NS danh sách được đặt hàng và bạn biết số lượng các phần tử trong danh sách . Nhưng trong khi phân loại danh sách , bạn có thể truy cập một phần tử tại một thời điểm thông qua một con trỏ đến nút đó, tức là nút trước đó hoặc nút tiếp theo.

Như vậy, độ phức tạp về thời gian sẽ như thế nào khi một tìm kiếm nhị phân được áp dụng trên một danh sách được liên kết?

Thời gian phức tạp không được nhiều hơn O (log n). Như danh sách liên kết không không cung cấp quyền truy cập ngẫu nhiên nếu chúng tôi cố gắng áp dụng tìm kiếm nhị phân thuật toán nó sẽ đạt được O (n) khi chúng ta cần tìm thấy chiều dài của danh sách và đi đến giữa.

Cũng cần biết, tìm kiếm nhị phân được thực hiện như thế nào? Tìm kiếm nhị phân : Tìm kiếm một mảng được sắp xếp bằng cách chia liên tục Tìm kiếm khoảng thời gian một nửa. Bắt đầu bằng một khoảng bao gồm toàn bộ mảng. Nếu giá trị của Tìm kiếm khóa nhỏ hơn mục ở giữa khoảng, thu hẹp khoảng xuống nửa dưới. Nếu không, hãy thu hẹp nó ở nửa trên.

Trong đó, phương pháp tìm kiếm nhị phân nào sử dụng để tìm một phần tử trong danh sách?

Tìm kiếm nhị phân hoạt động trên các mảng được sắp xếp. Tìm kiếm nhị phân bắt đầu bằng cách so sánh một yếu tố ở giữa mảng với mục tiêu giá trị . Nếu mục tiêu giá trị phù hợp với yếu tố , vị trí của nó trong mảng được trả về. Nếu mục tiêu giá trị ít hơn yếu tố , NS Tìm kiếm tiếp tục ở nửa dưới của mảng.

Làm thế nào để bạn lặp lại qua một danh sách được liên kết?

Một Trình lặp lại có thể được sử dụng để lặp lại xuyên qua một LinkedList . Phương thức hasNext () trả về true nếu có nhiều phần tử hơn trong LinkedList và false nếu không. Phương thức next () trả về phần tử tiếp theo trong LinkedList và ném ngoại lệ NoSuchElementException nếu không có phần tử tiếp theo.

Đề xuất: