📄 15ckey.c
字号:
void ckey(p,n,k,m)
int n,k,m;
HEAPSORT *p[];
{ int i,l;
HEAPSORT *w;
void pcsift();
if (k<0) k=0;
if (m>n-1) m=n-1;
l=m-k+1;
for (i=l/2-1; i>=0; i--)
pcsift(p,k,i,l);
for (i=l-1; i>=1; i--)
{ w=p[k]; p[k]=p[i+k]; p[i+k]=w;
pcsift(p,k,0,i);
}
return;
}
static void pcsift(p,k,i,l)
int i,l,k;
HEAPSORT *p[];
{ int m,n;
char t;
HEAPSORT *w;
t=(*p[i+k]).KEY; w=p[i+k]; n=2*(i+1)-1; m=i;
while (n<=l-1)
{ if ((n<l-1)&&((*p[n+k]).KEY<(*p[n+k+1]).KEY))
n=n+1;
if (t<(*p[n+k]).KEY)
{ p[m+k]=p[n+k];
m=n; n=2*(m+1)-1;
}
else n=l;
}
p[m+k]=w;
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -