📄 hpsel.cpp
字号:
#include "nr.h"
void NR::hpsel(Vec_I_DP &arr, Vec_O_DP &heap)
{
int i,j,k;
int m=heap.size();
int n=arr.size();
if (m > n/2 || m < 1) nrerror("probable misuse of hpsel");
for (i=0;i<m;i++) heap[i]=arr[i];
sort(heap);
for (i=m;i<n;i++) {
if (arr[i] > heap[0]) {
heap[0]=arr[i];
for (j=0;;) {
k=(j << 1)+1;
if (k > m-1) break;
if (k != (m-1) && heap[k] > heap[k+1]) k++;
if (heap[j] <= heap[k]) break;
SWAP(heap[k],heap[j]);
j=k;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -