堆中基本操作方法伪代码分析
来源:互联网 发布:淘宝文具海报1950px 编辑:程序博客网 时间:2024/06/03 17:49
堆其实是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在O(1)~O(logn)之间。
堆的几个基本操作:
上浮 shift_up;
下沉 shift_down
插入 push
弹出 pop
取顶 top
堆排序 heap_sort
Shift_up( i )//i为当前节点{ while( i / 2 >= 1) { if( 堆数组名[ i ] < 堆数组名[ i/2 ] ) { swap( 堆数组名[ i ] , 堆数组名[ i/2 ]) ; i = i / 2; } else break;}
Shift_down( i , n ) //n表示当前有n个节点{ while( i * 2 <= n) { T = i * 2 ; if( T + 1 <= n && 堆数组名[ T + 1 ] < 堆数组名[ T ]) T++; if( 堆数组名[ i ] < 堆数组名[ T ] ) { swap( 堆数组名[ i ] , 堆数组名[ T ] ); i = T; } else break;}插入操作其实是每次插入的时候呢,我们都往最后一个插入,让后使它上浮。
Push ( x ) { n++; 堆数组名[ n ] = x; Shift_up( n ); }弹出操作其实是弹出堆顶元素(将堆顶元素与堆最后一个元素交换,然后利用下沉操作来维护堆)
Pop ( x ) { swap( 堆数组名[1] , 堆数组名[ n ] ); n--; Shift_down( 1 ); }
取堆顶操作:根节点数组下标必定是1,返回堆[ 1 ]就OK了~~注意:每次取顶要判断堆内是否有元素;
堆排序:
Heap_sort( a[] ){ k=0; while( size > 0 ) { k++; a[ k ] = top(); pop(); } }
阅读全文
0 0
- 堆中基本操作方法伪代码分析
- Java中字符串基本操作方法
- 堆排序算法伪代码
- 堆的基本代码
- HeapSort 堆排序 基于伪代码实现
- hadoop伪分布式操作方法
- C++中堆内存的概念和操作方法入门
- latex中插入伪代码
- Java中基本数据类型与流的操作方法
- JS中常用的DOM基本操作方法总结
- 堆排序(依据算法导论伪代码)
- 《算法导论》第六章-堆排序(伪代码)
- 最大堆维护,MAX-HEAPIFY非递归伪代码
- 堆排序:源码(C++)--伪代码--时间复杂度解析
- 红黑树删除本质 与 伪代码分析
- master thread源码分析-伪代码
- MC1000的基本操作方法
- vi基本操作方法
- HDOJ 1907 John anti-nim博弈
- Selenium2+Python2.0自动化测试【17】 获取元素属性
- Python3中cmp函数和raw_input的改动(第一篇博客)
- 生成7-9的随机数
- php-socket理论(01)
- 堆中基本操作方法伪代码分析
- python利用cookie登录网站进行访问
- mysql binlog 简述
- div在浏览器滚动的时候在顶部固定
- php学习笔记--函数
- unity学习——使用协程实现延时效果
- ftp给用户分配登录权限
- java进行日期的加减,并写入到txt文件从中读取出来
- 日期时间范围选择插件-daterangepicker使用总结