Oleksii Trekhleb | Javascript algorithms (Heap data-structure)

This is a series of books diving deep into the core mechanisms of the JavaScript language.

 · 2 phút đọc.

This is a series of books diving deep into the core mechanisms of the JavaScript language.

In computer science, a heap is a specialized tree-based data structure that satisfies the heap property described below.

In a min heap, if P is a parent node of C, then the key (the value) of P is less than or equal to the key of C.

MinHeap

Made with okso.app

In a max heap, the key of P is greater than or equal to the key of C

MaxHeap

Array Representation

The node at the top of the heap with no parents is called the root node.

Time Complexities

Here are time complexities of various heap data structures. Function names assume a max-heap.

Operationfind-maxdelete-maxinsertincrease-keymeld
BinaryΘ(1)Θ(log n)O(log n)O(log n)Θ(n)
LeftistΘ(1)Θ(log n)Θ(log n)O(log n)Θ(log n)
BinomialΘ(1)Θ(log n)Θ(1)O(log n)O(log n)
FibonacciΘ(1)Θ(log n)Θ(1)Θ(1)Θ(1)
PairingΘ(1)Θ(log n)Θ(1)o(log n)Θ(1)
BrodalΘ(1)Θ(log n)Θ(1)Θ(1)Θ(1)
Rank-pairingΘ(1)Θ(log n)Θ(1)Θ(1)Θ(1)
Strict FibonacciΘ(1)Θ(log n)Θ(1)Θ(1)Θ(1)
2-3 heapO(log n)O(log n)O(log n)Θ(1)?

Where:

  • find-max (or find-min): find a maximum item of a max-heap, or a minimum item of a min-heap, respectively (a.k.a. peek)

  • delete-max (or delete-min): removing the root node of a max heap (or min heap), respectively

  • insert: adding a new key to the heap (a.k.a., push)

  • increase-key or decrease-key: updating a key within a max- or min-heap, respectively

  • meld: joining two heaps to form a valid new heap containing all the elements of both, destroying the original heaps.

In this repository, the MaxHeap.js and MinHeap.js are examples of the Binary heap.

Implementation

  • MaxHeap.js and MinHeap.js

  • MaxHeapAdhoc.js and MinHeapAdhoc.js

  • The minimalistic (ad hoc) version of a MinHeap/MaxHeap data structure that doesn’t have external dependencies and that is easy to copy-paste and use during the coding interview if allowed by the interviewer (since many data structures in JS are missing).

nhavantuonglai

Share:
Quay lại.

Có thể bạn chưa đọc

Xem tất cả »

Đăng ký nhận bảng tin hàng tuần

Liên lạc trao đổi

Liên lạc thông qua Instagram

Thông qua Instagram, bạn có thể trao đổi trực tiếp và tức thời, cũng như cập nhật những thông tin mới nhất từ nhavantuonglai.

Tức thời

Bạn có thể gửi và nhận tin nhắn nhanh chóng, trực tiếp, giúp những vấn đề cá nhân của bạn được giải quyết tức thời và hiệu quả hơn.

Thân thiện

Vì tính chất là kênh liên lạc nhanh, nên bạn có thể bỏ qua những nghi thức giao tiếp thông thường, chỉ cần lịch sự và tôn trọng thì sẽ nhận được sự phản hồi đầy thân thiện, thoải mái từ tác giả.

Trao đổi trên email

Thông qua email cá nhân, bạn có thể trao đổi thỏa thuận hợp tác, kết nối chuyên sâu và mang tính chuyên nghiệp.

Tin cậy

Trong một số trường hợp, email được dùng như một tài liệu pháp lý, chính vì vậy mà bạn có thể an tâm và tin cậy khi trao đổi với tác giả thông qua email.

Chuyên nghiệp

Cấu trúc của email đặt tính chuyên nghiệp lên hàng đầu, nên những thông tin, nội dung được viết trong email từ tác giả sẽ luôn đảm bảo điều này ở mức cao nhất.