?? 9_8.txt
字號:
void sift(RecordType r[], int k, int m)
/* 假設r[k..m]是以r[k]為根的完全二叉樹,且分別以r[2k]和r[2k+1]為根的左、右子樹為大根堆,調整r[k],使整個序列r[k..m]滿足堆的性質 */
{
RecordType t;
int i,j;
int x;
int finished;
t= r[k]; /* 暫存"根"記錄r[k] */
x=r[k].key;
i=k;
j=2*i;
finished=FALSE;
while( j<=m && !finished )
{
if (j<m && r[j].key< r[j+1].key )
j=j+1; /* 若存在右子樹,且右子樹根的關鍵字大,則沿右分支"篩選" */
if ( x>= r[j].key)
finished=TRUE; /* 篩選完畢 */
else
{
r[i] = r[j];
i=j;
j=2*i;
} /* 繼續篩選 */
}
r[i] =t; /* r[k]填入到恰當的位置 */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -