Video: Bạn có thể tìm kiếm nhị phân một danh sách được liên kết không?
2024 Tác giả: Lynn Donovan | [email protected]. Sửa đổi lần cuối: 2023-12-15 23:55
Đú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:
Làm thế nào để DLL danh sách liên kết đôi so với SLL danh sách liên kết đơn)?
Giới thiệu về danh sách được liên kết gấp đôi: Danh sách được liên kết kép (DLL) chứa một con trỏ phụ, thường được gọi là con trỏ trước đó, cùng với con trỏ tiếp theo và dữ liệu có trong danh sách được liên kết đơn lẻ. SLL có các nút chỉ có trường dữ liệu và trường liên kết tiếp theo. DLL chiếm nhiều bộ nhớ hơn SLL vì nó có 3 trường
Làm thế nào để bạn tìm thấy điểm giữa của một tìm kiếm nhị phân?
Cho một mảng đã sắp xếp, chúng tôi tìm phần tử ở giữa và kiểm tra phần tử bằng khóa. Nếu phần tử gần nhất bằng với khóa, chúng tôi đã tìm thấy khóa. Nếu phần tử gần nhất lớn hơn khóa, chúng tôi tìm kiếm ở nửa bên trái của phần tử gần nhất, nếu không, chúng tôi tìm kiếm ở nửa bên phải
Làm thế nào để bạn xóa một danh sách liên kết vòng tròn?
Xóa khỏi danh sách được liên kết theo hình tròn Nếu danh sách không trống thì chúng tôi xác định hai con trỏ curr và ưu tiên và khởi tạo curr con trỏ với nút đầu. Duyệt qua danh sách bằng cách sử dụng curr để tìm nút sẽ bị xóa và trước khi di chuyển curr đến nút tiếp theo, mọi lúc đặt trước giá trị trước = curr. Nếu nút được tìm thấy, hãy kiểm tra xem nó có phải là nút duy nhất trong danh sách hay không
Sự khác biệt giữa danh sách liên kết kép và danh sách liên kết vòng là gì?
Danh sách liên kết hình tròn là danh sách không có nút đầu hoặc nút cuối mà thay vào đó chúng theo một tiêu chí hình tròn. Danh sách được liên kết kép là danh sách mà mỗi điểm nút không chỉ đến nút tiếp theo mà còn tới nút trước đó
Làm cách nào để bạn thêm một nút vào danh sách được liên kết?
Chèn một nút tại một vị trí cụ thể trong danh sách được liên kết Duyệt qua danh sách được Liên kết lên đến vị trí-1 các nút. Khi tất cả các nút vị trí-1 được duyệt qua, hãy cấp phát bộ nhớ và dữ liệu đã cho cho nút mới. Trỏ con trỏ tiếp theo của nút mới tới nút tiếp theo của nút hiện tại. Trỏ con trỏ tiếp theo của nút hiện tại tới nút mới