Giter VIP home page Giter VIP logo

queue's Issues

Clarify the complexity of `dequeue()`

Hello, I wonder why dequeuing all elements runs in $O(n \log n)$? The following operation will only run $\log n$ times:

// only remove dequeued elements when reaching half size
// to decrease latency of shifting elements.
this._elements = this._elements.slice(this._offset);

And since Array.slice() runs in $O(n)$, the complexity should be: $$\frac{n}{2} + \frac{n}{4} + \cdots + 1 < \frac{n}{2} + \frac{n}{4} + \cdots = \frac{n}{2} \cdot \sum_{i=0}^{\infty} \frac{1}{2^i} = \frac{n}{2} \cdot 2 = n = O(n)$$

So the overall complexity of dequeuing all elements should be $O(n + n) = O(n)$, and hence the amortized complexity of dequeue() is $O(1)$. Please correct me if I am wrong :)

pop_back & deque

deque which allows push_front & pop_back, is a very useful data structure
when it comes to inserting/ deleting either ends

https://en.cppreference.com/w/cpp/container/deque


we can create a new data structure with name deque
or
allow one more param in constructor of queue, that enables it to work like deque and has similar operation to pop_back

what are your views on this? thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.