基本数据结构--堆(Heap)

分手后的思念是犯贱 2023-06-03 14:52 99阅读 0赞

堆:是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。

性质:

  • 堆中某个节点的值总是不大于或不小于其父节点的值;
  • 堆总是一棵完全二叉树。

把堆当做数组存储,堆里的元素有上浮,下沉操作,(上浮,下沉过程尽量满足最小堆或最大堆的性质,最小堆元素下沉的的过程往较大的儿子方向沉)

1、初始化堆,相当于建立一个完全二叉树,但在末尾每次添加元素后都要进行比较,上浮。

2、添加元素,往数组的最后面添加,然后进行上浮操作。

3、删除堆顶,堆顶元素与最后一个元素交换,删除最后一个元素,然后进行下沉操作。

  1. Shift_down( i , n ) //n表示当前有n个节点
  2. {
  3. while( i * 2 <= n)
  4. {
  5. T = i * 2 ;
  6. if( T + 1 <= n && 堆数组名[ T + 1 ] < 堆数组名[ T ])
  7. T++;
  8. if( 堆数组名[ i ] < 堆数组名[ T ] )
  9. {
  10. swap( 堆数组名[ i ] , 堆数组名[ T ] );
  11. i = T;
  12. }
  13. else break;
  14. }
  15. Shift_up( i )
  16. {
  17. while( i / 2 >= 1)
  18. {
  19. if( 堆数组名[ i ] < 堆数组名[ i/2 ] )
  20. {
  21. swap( 堆数组名[ i ] , 堆数组名[ i/2 ]) ;
  22. i = i / 2;
  23. }
  24. else break;

转载于:https://www.cnblogs.com/didiaoxiaoguai/p/10630767.html

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构Heap

    是由完全二叉树实现的 **完全二叉树:** 若设二叉树的深度为h,除第h层外,其他各层(1—h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是...

    相关 数据结构-heap

    堆(heap)也被称为优先队列(priority queue)。队列中允许的操作是先进先出(FIFO),在队尾插入元素,在队头取出元素。而堆也是一样,在堆底插入元素,在堆顶取出