?? 15ikey.c
字號:
void ikey(p,n,k,m)
int n,k,m;
HEAPSORT *p[];
{ int i,l;
HEAPSORT *w;
void pisift();
if (k<0) k=0;
if (m>n-1) m=n-1;
l=m-k+1;
for (i=l/2-1; i>=0; i--)
pisift(p,k,i,l);
for (i=l-1; i>=1; i--)
{ w=p[k]; p[k]=p[i+k]; p[i+k]=w;
pisift(p,k,0,i);
}
return;
}
static void pisift(p,k,i,l)
int i,l,k;
HEAPSORT *p[];
{ int m,n;
int 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 + -