📄 sort.cpp
字号:
/*************************************************************************/
/* */
/* Sorting utilities */
/* ----------------- */
/* */
/*************************************************************************/
#include "defns.h"
#include "c45types.h"
#include "extern.h"
/*************************************************************************/
/* */
/* Sort items from Fp to Lp on attribute a */
/* */
/*************************************************************************/
void Quicksort(ItemNo Fp, ItemNo Lp, Attribute Att, void (*Exchange)(int,int))
/* --------- */
{
register ItemNo Lower, Middle;
register double 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 + -