Heapsort Algorithm using min-heap

前端 未结 3 1553
逝去的感伤
逝去的感伤 2021-02-09 13:04

When I implement heapsort using a min-heap it sorts the array from largest to smallest. Is this the desired output for a heapsort using

3条回答
  •  花落未央
    2021-02-09 13:48

    Normally you use a max-heap to sort in ascending order, because its easier. Using a max-heap, you 'float' the max to the front, and build the sorted list from the back.

    If you want to use a min-heap to sort in ascending order, you have to build it backwards. (ie the lowest is the last index ). Otherwise you will be churning your heap.

    start 18 70 6 13 12 55 
    min-heap(backwards) -> 18 70 55 13 12 6
    then
    swap  6 w 18 -> 6, 70 55 13 12 18 -> sink 18 -> 70 55 13 18 12
    swap 12 w 70 -> 6 12, 55 13 18 70 -> sink 70 -> 55 70 18 13
    swap 13 w 55 -> 6 12 13, 70 18 55 -> sink 55 -> 70 55 18
    swap 18 w 70 -> 6 12 13 18, 55 70 -> sink 70 -> 70 55
    swap 55 w 70 -> 6 12 13 18 55, 70 
    done
    

提交回复
热议问题