⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 heap.cc

📁 A C++ library which finds associations within sets of items, using a fast in-memory algorithm
💻 CC
字号:
#include <unistd.h>#include "Trans.h"#include "Heap.h"Heap::Heap( int nn ) { nelts = 0; n = nn; h = new (Trans *)[nn+1]; };Heap::Heap( Trans **p, int nn ) { nelts = n = nn; h = p ; /* also need to heapify */};void Heap::heapify( int nn ) {	for( int i = 0; i < nn; ) siftup(++i);};void Heap::ins( Trans * pt ) {	h[++nelts] = pt;	siftup(nelts);};Trans * Heap::peek() const { return( nelts > 0 ? h[1] : NULL ); };void Heap::swapsert( Trans * &pt ) { // swap head and pt; sift down	Trans * tmp;	tmp = pt; pt = h[1]; h[1] = tmp;	siftdown();};int Heap::tstswap( int i, int j ) {	//nswap++;	int tst = ( *h[i] < *h[j] );	if( tst )		{ Trans * tmp = h[i]; h[i]=h[j]; h[j]=tmp; };	return tst;};void Heap::siftup(int m) {	int i,j;	for( i = m ; (j = i>>1) > 0 && tstswap(i,j); i = j );};void Heap::siftdown() {	//nsift++;        int j =1;	while( (j = (2*j)) <= nelts ) {		if( (j < nelts) &&  ( *h[j+1] < *h[j] )) j++;		if( !tstswap( j, j>>1 ) )			break;	};};int Heap::chk() {	int i;	for( i = 2; ( i <= nelts ) && *h[ i/2 ] <= *h[i]; i++ );	return( i <= nelts ? i : 0 );	};int Heap::nelt() const { return nelts; };Trans * Heap::delmin() {	Trans * min = NULL;	if( nelts > 0 ) {		nelts--;		min = h[1];		};	if( nelts > 0 ) {		h[1] = h[nelts+1];		siftdown();	};	return min;}void Heap::prt() {  int i;  for( i=1; i<=nelts; i++ ) h[i]->prt(0);}void Heap::prt( int i ) { h[i]->prt(0); };

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -