?? sort.c
字號:
/*************************************************************************/
/* */
/* Sorting utilities */
/* ----------------- */
/* */
/*************************************************************************/
#include "defns.i"
#include "types.i"
#include "extern.i"
/*************************************************************************/
/* */
/* Sort items from Fp to Lp on attribute a */
/* */
/*************************************************************************/
Quicksort(Fp, Lp, Att, Exchange)
/* --------- */
ItemNo Fp, Lp;
Attribute Att;
void (*Exchange)();
{
register ItemNo Lower, Middle;
register float Thresh;
register ItemNo i;
if ( Fp < Lp )
{
Thresh = CVal(Item[Lp], Att);
/* Isolate all items with values <= threshold */
Middle = Fp;
for ( i = Fp ; i < Lp ; i++ )
{
if ( CVal(Item[i], Att) <= Thresh )
{
if ( i != Middle ) (*Exchange)(Middle, i);
Middle++;
}
}
/* Extract all values equal to the threshold */
Lower = Middle - 1;
for ( i = Lower ; i >= Fp ; i-- )
{
if ( CVal(Item[i], Att) == Thresh )
{
if ( i != Lower ) (*Exchange)(Lower, i);
Lower--;
}
}
/* Sort the lower values */
Quicksort(Fp, Lower, Att, Exchange);
/* Position the middle element */
(*Exchange)(Middle, Lp);
/* Sort the higher values */
Quicksort(Middle+1, Lp, Att, Exchange);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -