1. Trang chủ
  2. » Địa lí lớp 6

Bài giảng Cấu trúc dữ liệu và giải thuật: Hàng đợi ưu tiên - Phan Mạnh Hiển (2020)

10 19 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

− Tuy nhiên, cây nhị phân tìm kiếm quá phức tạp cho yêu cầu đơn giản hơn của hàng đợi ưu tiên. • Đống nhị phân (binary heap)[r]

(1)

Hàng đợi ưu tiên

(Priority Queues)

Nguyễn Mạnh Hiển

(2)

Hàng đợi ưu tiên

• Chèn (insert)

− Thời gian O(log N)

(3)

Cài đặt hàng đợi ưu tiên

• Dùng danh sách liên kết:

− insert thời gian O(1)

− deleteMin thời gian O(N)

• Dùng nhị phân tìm kiếm:

− insert deleteMin thời gian O(log N)

− Tuy nhiên, nhị phân tìm kiếm phức tạp cho yêu

cầu đơn giản hàng đợi ưu tiên

• Đống nhị phân (binary heap)

(4)

Đống nhị phân

• Gọi tắt đống

(5)

Cây nhị phân đầy đủ

• Là nhị phân với tất mức (trừ mức cùng)

lấp đầy nút từ trái sang phải

• Số nút N

2

0

+ 2

1

+ + 2

h–1

+ = 2

h

h

log N

Mức có 2

0

nút

Mức có 2

1

nút

Mức có 2

2

nút

(6)

Cài đặt nhị phân đầy đủ

Lưu trữ phần tử mức vào vector v

• Cha v[k] = v[k/2]

• Con trái v[k] = v[2k]

• Con phải v[k] = v[2k + 1]

(7)

Tính chất thứ tự đống

• Với nút X đống (trừ nút gốc), giá trị

nút cha X nhỏ giá trị nút X

• Suy ra:

− Phần tử nhỏ đống nằm gốc

− Khơng có thứ tự nút

một nút

0

3

2

(8)(9)

Cài đặt hàng đợi ưu tiên C++

template <typename T> // T kiểu phần tử class BinaryHeap {

public:

BinaryHeap(int capacity = 100);

BinaryHeap(const vector<T> & elems);

const T & findMin(); // tìm phần tử nhỏ (ở gốc) void insert(const T & x); // chèn x vào đống

void deleteMin(); // xóa phần tử nhỏ (ở gốc) private:

int currentSize; // số phần tử có

vector<T> array; // vector chứa phần tử void buildHeap(); // xem slide phía sau

(10)

Ngày đăng: 11/03/2021, 09:45

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w