Computer >> Máy Tính >  >> Lập trình >> Python

Thuật toán hàng đợi đống trong Python

Cấu trúc dữ liệu heap có thể được sử dụng để biểu diễn một hàng đợi ưu tiên. Trong python, nó có sẵn trong mô-đun heapq. Ở đây nó tạo ra một min-heap. Vì vậy, khi mức độ ưu tiên là 1, nó thể hiện mức độ ưu tiên cao nhất. Khi các phần tử mới được chèn vào, cấu trúc heap sẽ cập nhật.

Để sử dụng mô-đun này, chúng ta nên nhập nó bằng cách sử dụng -

import heapq

Có một số hoạt động liên quan đến đống. Đây là -

Phương thức heapq.heapify (có thể lặp lại)

Nó được sử dụng để chuyển đổi một tập dữ liệu có thể lặp lại thành cấu trúc dữ liệu heap.

Phương thức heapq.heappush (heap, phần tử)

Phương thức này được sử dụng để chèn phần tử vào heap. Sau đó, xếp lại toàn bộ cấu trúc heap.

Phương thức heapq.heappop (heap)

Phương thức này được sử dụng để trả về và xóa phần tử khỏi phần trên cùng của heap và thực hiện heapify trên các phần tử còn lại.

Phương thức heapq.heappushpop (heap, phần tử)

Phương thức này được sử dụng để chèn và bật phần tử trong một câu lệnh ..

Phương thức heapq.heapreplace (heap, phần tử)

Phương thức này được sử dụng để chèn và bật phần tử trong một câu lệnh. Nó xóa phần tử khỏi gốc của heap, sau đó chèn phần tử vào heap.

Phương thức heapq.nlargest (n, có thể lặp lại, khóa =Không có)

Phương thức này được sử dụng để trả về n phần tử lớn nhất từ ​​heap.

Phương thức heapq.nsmallest (n, có thể lặp lại, khóa =Không có)

Phương thức này được sử dụng để trả về n phần tử nhỏ nhất từ ​​heap.

Mã mẫu

import heapq
my_list = [58, 41, 12, 17, 89, 65, 23, 20, 10, 16, 17, 19]
heapq.heapify(my_list)
print(my_list)
heapq.heappush(my_list, 7)
print(my_list)
print('Popped Element: ' + str(heapq.heappop(my_list)))
print(my_list)
new_iter = list()
new_iter = heapq.nlargest(4, my_list)
print(new_iter)

Đầu ra

[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65]
[7, 16, 10, 17, 17, 12, 23, 20, 41, 89, 58, 65, 19]
Popped Element: 7
[10, 16, 12, 17, 17, 19, 23, 20, 41, 89, 58, 65]
[89, 65, 58, 41]