Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6219931
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T07:52:12+00:00 2026-05-24T07:52:12+00:00

I was implementing a heap sort and I start wondering about the different implementations

  • 0

I was implementing a heap sort and I start wondering about the different implementations of heaps. When you don need to access the elements by index(like in a heap sort) what are the pros and cons of implementing a heap with an array or doing it like any other linked data structure.

I think it’s important to take into account the memory wasted by the nodes and pointers vs the memory wasted by empty spaces in an array, as well as the time it takes to add or remove elements when you have to resize the array.

When I should use each one and why?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T07:52:13+00:00Added an answer on May 24, 2026 at 7:52 am

    As far as space is concerned, there’s very little issue with using arrays if you know how much is going into the heap ahead of time — your values in the heap can always be pointers to the larger structures. This may afford for better cache localization on the heap itself, but you’re still going to have to go out someplace to memory for extra data. Ideally, if your comparison is based on a small morsel of data (often just a 4 byte float or integer) you can store that as the key with a pointer to the full data and achieve good cache coherency.

    Heap sorts are already not particularly good on cache hits throughout traversing the heap structure itself, however. For small heaps that fit entirely in L1/L2 cache, it’s not really so bad. However, as you start hitting main memory performance will dive bomb. Usually this isn’t an issue, but if it is, merge sort is your savior.

    The larger problem comes in when you want a heap of undetermined size. However, this still isn’t so bad, even with arrays. Anymore, in non-embedded environments with nice, pretty memory systems growing an array with some calls (e.g. realloc, please forgive my C background) really isn’t all that slow because the data may not need to physically move in memory — just some address pointer magic for most of it. Added to the fact that if you use a array-size-doubling strategy (array is too small, double the size in a realloc call) you’re still ending up with an O(n) amortized cost with relatively few reallocs and at most double wasted space — but hey, you’d get that with linked lists anyways if you’re using a 32-bit key and 32-bit pointer.

    So, in short, I’d stick with arrays for the smaller base data structures. When the heap goes away, so do the pointers I don’t need anymore with a single deallocation. However, it’s easier to read pointer-based code for heaps in my opinion since dealing with the indexing magic isn’t quite as straightforward. If performance and memory aren’t a concern, I’d recommend that to anyone in a heartbeat.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Whilst implementing my first MVVM application in WPF, I've been wondering about the pros
I'm implementing a heap allocator (malloc), and I need to choose a magic number
I would like to ask about Memory Overhead in java, I have a large
In implementing M-V-VM in a project and following advice of Karl Shifflett about implementing
I'm looking for information on how to implement binary heaps efficiently. I feel like
I've been implementing selection sort problems for class and one of the assignments is
I'm trying different data structures for implementing Prim's algorithm. So I made a class
I am implementing a suffix trie (this is different from a suffix tree) that
When implementing a client/server solutions, one of the questions you always need to answer
I have been implementing a heap in C++ using a vector. Since I have

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.