Làm cách nào để bạn sắp xếp hàng đợi ưu tiên trong python?

Hàng đợi ưu tiên Python lưu trữ dữ liệu theo một thứ tự cụ thể. Có hai cách để triển khai hàng đợi ưu tiên trong Python. sử dụng lớp hàng đợi và sử dụng mô-đun heapq

Bạn có thể muốn sắp xếp dữ liệu dựa trên giá trị của từng mục trong danh sách. Chẳng hạn, bạn có thể muốn giá trị cao nhất xuất hiện đầu tiên trong danh sách và giá trị thấp nhất xuất hiện cuối cùng trong danh sách

Tìm trận đấu Bootcamp của bạn

  • Career Karma kết hợp bạn với các bootcamp công nghệ hàng đầu
  • Truy cập học bổng độc quyền và các khóa học chuẩn bị
Chọn sở thích của bạn
Tên

Họ

Email

Điện thoại .


By continuing you agree to our Terms of Service and Privacy Policy, and you consent to receive offers and opportunities from Career Karma by telephone, text message, and email.

Đó là nơi hàng đợi ưu tiên xuất hiện. Hàng đợi ưu tiên là cấu trúc dữ liệu lưu trữ dữ liệu dựa trên giá trị của các khóa theo thứ tự tăng dần. Điều này cho phép bạn dễ dàng truy cập giá trị nhỏ nhất và lớn nhất trong hàng đợi

Hướng dẫn này sẽ thảo luận về lý do tại sao bạn không nên sử dụng danh sách để tạo hàng đợi ưu tiên. Chúng tôi sẽ chỉ cho bạn hai cách tiếp cận hiệu quả hơn mà bạn có thể sử dụng để tạo hàng đợi ưu tiên Python

Hàng đợi ưu tiên Python là gì?

Hàng đợi ưu tiên là phiên bản sửa đổi của hàng đợi lưu trữ dữ liệu theo thứ tự phần tử nào có mức độ ưu tiên cao nhất. Mức độ ưu tiên của từng phần tử trong hàng đợi ưu tiên được quyết định tùy thuộc vào giá trị của phần tử

Trong khoa học máy tính, hàng đợi là cấu trúc dữ liệu lưu trữ các mục theo thứ tự nhập trước, xuất trước [FIFO]. Có một vài tình huống sử dụng cấu trúc này có thể hữu ích

Chẳng hạn, giả sử bạn đang xây dựng một ứng dụng theo dõi đơn đặt hàng cho một nhà hàng. Người đặt món trước phải được phục vụ trước người đặt món sau. Để theo dõi các đơn đặt hàng, bạn sẽ muốn sử dụng hàng đợi

Có hai cách để xác định hàng đợi ưu tiên trong Python

  • Sử dụng lớp hàng đợi PriorityQueue
  • Sử dụng mô-đun heapq

» THÊM.   Câu lệnh chuyển đổi Python. Hướng dẫn cách thực hiện

Bạn có thể xác định hàng đợi ưu tiên bằng cấu trúc danh sách. Tuy nhiên, chiến lược này kém hiệu quả hơn so với việc sử dụng lớp hàng đợi PriorityQueue hoặc mô-đun heapq

Hàng đợi ưu tiên Python. xếp hàng. Hàng đợi ưu tiên

hàng đợi. Lớp PriorityQueue tạo hàng đợi ưu tiên Python. Lớp này là một phần của thư viện hàng đợi Python. Bạn cần nhập thư viện hàng đợi để sử dụng lớp này. Để truy xuất một mục từ PriorityQueue, bạn có thể sử dụng phương thức get[]

Để truy cập lớp PriorityQueue, chúng ta cần nhập nó vào mã của mình, điều này chúng ta có thể thực hiện bằng cách sử dụng câu lệnh nhập Python này

from queue import PriorityQueue

Giả sử chúng tôi muốn tạo hàng đợi ưu tiên cho những người có vé tại một buổi hòa nhạc địa phương. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này

from queue import PriorityQueue

ticket_holders = PriorityQueue[]

ticket_holders.put[[3, 'Paul']]
ticket_holders.put[[1, 'Miles']]
ticket_holders.put[[2, 'Dani']]

while not ticket_holders.empty[]:
	item = ticket_holders.get[]
	print[item]

mã của chúng tôi trả về

[1, 'Miles']
[2, 'Dani']
[3, 'Paul']

Trong mã của chúng tôi, trước tiên chúng tôi nhập lớp PriorityQueue từ thư viện hàng đợi, sau đó chúng tôi khởi tạo một hàng đợi ưu tiên có tên là ticket_holders. Tiếp theo, chúng tôi chèn ba bộ dữ liệu vào hàng đợi ưu tiên của chúng tôi, lưu trữ số vé và tên được liên kết với vé

Chúng tôi sử dụng vòng lặp while của Python để chạy qua từng mục trong hàng đợi ưu tiên của ticket_holders. Sau đó, chúng tôi truy xuất mục đó bằng cách sử dụng get[]

hàng đợi. Phương thức PriorityQueue hiệu quả và dễ sử dụng, khiến nó trở thành lựa chọn tuyệt vời khi bạn cần tạo hàng đợi ưu tiên

Hàng đợi ưu tiên Mô-đun heapq Python

Mô-đun heapq cho phép bạn xác định hàng đợi ưu tiên Python. Cấu trúc dữ liệu heapq loại bỏ các mục theo thứ tự ưu tiên của chúng. Giá trị thấp nhất có mức ưu tiên thấp nhất và giá trị cao nhất có mức ưu tiên cao nhất trong cấu trúc heapq

» THÊM.   Python sqrt[]. Hướng dẫn cách thực hiện

Trước khi chúng tôi có thể sử dụng mô-đun heapq, trước tiên chúng tôi phải nhập mô-đun đó vào mã của mình bằng cách sử dụng câu lệnh nhập sau

import heapq

Hãy quay lại ví dụ trước đó của chúng tôi. Giả sử chúng ta muốn tạo một hàng đợi ưu tiên để lưu trữ thông tin về những người có vé tại một buổi hòa nhạc. Chúng tôi có thể làm như vậy bằng cách sử dụng mô-đun heapq và chương trình này

import heapq

ticket_holders = []

heapq.heappush[ticket_holders, [3, 'Paul']]
heapq.heappush[ticket_holders, [1, 'Miles']]
heapq.heappush[ticket_holders, [2, 'Dani']]

while ticket_holders:
	item = heapq.heappop[ticket_holders]
	print[item]

mã của chúng tôi trả về

[1, 'Miles']
[2, 'Dani']
[3, 'Paul']

Đầu tiên, chúng tôi đã nhập thư viện heapq, sau đó chúng tôi khởi tạo một biến Python có tên là ticket_holders. Chúng tôi đã sử dụng phương thức heappush[] để đẩy ba bộ dữ liệu vào hàng đợi ưu tiên của chúng tôi. Hàng đợi này lưu số vé của từng người giữ vé và tên của từng người giữ vé

Sau đó, chúng tôi đã tạo một vòng lặp while để lặp qua từng mục trong hàng đợi ưu tiên của chúng tôi. Vòng lặp này loại bỏ mục ở đầu hàng đợi bằng cách sử dụng heappop[]. Sau đó, mục đã xóa được in ra bàn điều khiển. Như bạn có thể thấy, tất cả các mục trong hàng đợi của chúng tôi được in ra theo thứ tự ưu tiên của chúng

Tại sao bạn không nên giữ một danh sách

Về mặt kỹ thuật, bạn có thể tạo hàng đợi ưu tiên bằng cách sử dụng cấu trúc dữ liệu danh sách Python. Để làm như vậy, bạn sẽ tạo một danh sách, sau đó sắp xếp nó theo thứ tự tăng dần

Tuy nhiên, đây là cách tương đối kém hiệu quả để duy trì hàng đợi ưu tiên. Khi bạn thay đổi các mục trong danh sách, bạn sẽ cần sắp xếp lại thứ tự danh sách, việc này sẽ mất thời gian

Bạn có thể sử dụng danh sách truyền thống làm hàng đợi ưu tiên nếu bạn chỉ cần lưu trữ một vài giá trị. Tuy nhiên, nếu bạn đang muốn tạo một hàng đợi lớn hơn, danh sách không phải là một lựa chọn tốt

» THÊM.   Cách viết mã dãy Fibonacci bằng Python

Để tham khảo, hãy xem qua một ví dụ về hàng đợi ưu tiên sử dụng danh sách. Giả sử chúng ta muốn tạo một hàng đợi ưu tiên lưu trữ thứ tự của những người có vé sẽ được vào xem buổi hòa nhạc trước. Chúng ta có thể sử dụng đoạn mã sau để tạo hàng đợi này

ticket_holders = []

ticket_holders.append[[3, 'Paul']]
ticket_holders.append[[1, 'Miles']]
ticket_holders.append[[2, 'Dani']]

ticket_holders.sort[reverse=True]

while ticket_holders:
	item = ticket_holders.pop[]
	print[item]

mã của chúng tôi trả về

"Career Karma bước vào cuộc đời tôi khi tôi cần nó nhất và nhanh chóng giúp tôi phù hợp với bootcamp. Hai tháng sau khi tốt nghiệp, tôi đã tìm được công việc mơ ước phù hợp với giá trị và mục tiêu của mình trong cuộc sống. "

Venus, Kỹ sư phần mềm tại Rockbot

Find Your Bootcamp Match

[1, 'Miles']
[2, 'Dani']
[3, 'Paul']

Chúng tôi đã tạo một danh sách có tên là ticket_holders, sau đó chúng tôi đã thêm ba bộ dữ liệu vào danh sách. Mỗi bộ dữ liệu chứa số vé của người giữ vé và tên của họ. Sau đó, chúng tôi đã sử dụng hàm sort[] của Python để sắp xếp danh sách những người có vé theo thứ tự ngược lại

Chúng tôi đã tạo một vòng lặp lặp lại qua mọi mục trong danh sách ticket_holders và mục ở đầu danh sách. Sau đó, mã của chúng tôi in mục đã xóa ra bảng điều khiển

Sự kết luận

Hai cách phổ biến nhất để tạo hàng đợi ưu tiên là sử dụng mô-đun heapq hoặc hàng đợi. lớp PriorityQueue. Mặc dù về mặt kỹ thuật, bạn có thể sử dụng danh sách làm hàng đợi ưu tiên, nhưng phương pháp này không mở rộng tốt

Hướng dẫn này đã thảo luận, có tham khảo các ví dụ, cách tạo hàng đợi ưu tiên trong Python. Bây giờ, bạn đã được trang bị kiến ​​thức cần thiết để bắt đầu tạo hàng đợi ưu tiên của riêng mình như một chuyên gia Python

Để được hướng dẫn thêm về cách học Python, hãy xem toàn bộ hướng dẫn Cách học Python của chúng tôi

Xếp hạng bài viết này



Về chúng tôi. Career Karma là một nền tảng được thiết kế để giúp người tìm việc tìm kiếm, nghiên cứu và kết nối với các chương trình đào tạo việc làm để thăng tiến trong sự nghiệp của họ. Tìm hiểu về ấn phẩm CK

Chúng tôi có thể sắp xếp hàng đợi ưu tiên không?

Hàng đợi ưu tiên này sẽ được sắp xếp theo cùng bộ so sánh với tập hợp đã cho hoặc theo thứ tự tự nhiên của các phần tử nếu tập hợp được sắp xếp theo thứ tự tự nhiên của các phần tử của nó

Hàng đợi ưu tiên có tự động sắp xếp Python không?

Hàng đợi ưu tiên không được sắp xếp . Hàng đợi ưu tiên chỉ đảm bảo rằng khi bạn gọi get[] , nó sẽ trả về cho bạn mục ưu tiên cao nhất.

Hàng đợi ưu tiên được tổ chức như thế nào?

Hàng đợi ưu tiên là một loại hàng đợi đặc biệt trong đó mỗi phần tử được liên kết với một giá trị ưu tiên . Và, các yếu tố được phục vụ trên cơ sở ưu tiên của họ. Tức là các phần tử có mức độ ưu tiên cao hơn sẽ được phục vụ trước. Tuy nhiên, nếu các phần tử có cùng mức độ ưu tiên xuất hiện, chúng sẽ được phục vụ theo thứ tự của chúng trong hàng đợi.

Sắp xếp nào sử dụng hàng đợi ưu tiên?

Phân loại theo nhóm. Chúng ta có thể sử dụng bất kỳ hàng đợi ưu tiên nào để phát triển phương pháp sắp xếp . Chúng tôi chèn tất cả các khóa cần sắp xếp vào hàng đợi ưu tiên theo định hướng tối thiểu, sau đó lặp lại việc xóa khóa tối thiểu để xóa tất cả theo thứ tự. Khi sử dụng heap cho hàng đợi ưu tiên, chúng ta thu được heapsort.

Chủ Đề