Init
This commit is contained in:
31
usr.bin/refer/shell.c
Normal file
31
usr.bin/refer/shell.c
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef lint
|
||||
static char sccsid[] = "@(#)shell.c 1.1 94/10/31 SMI"; /* from UCB 4.1 5/6/83 */
|
||||
#endif
|
||||
/*
|
||||
* SORTS UP.
|
||||
* IF THERE ARE NO EXCHANGES (IEX=0) ON A SWEEP
|
||||
* THE COMPARISON GAP (IGAP) IS HALVED FOR THE NEXT SWEEP
|
||||
*/
|
||||
shell (n, comp, exch)
|
||||
int (*comp)(), (*exch)();
|
||||
{
|
||||
int igap, iplusg, iex, i, imax;
|
||||
igap=n;
|
||||
while (igap > 1)
|
||||
{
|
||||
igap /= 2;
|
||||
imax = n-igap;
|
||||
do
|
||||
{
|
||||
iex=0;
|
||||
for(i=0; i<imax; i++)
|
||||
{
|
||||
iplusg = i + igap;
|
||||
if ((*comp) (i, iplusg) ) continue;
|
||||
(*exch) (i, iplusg);
|
||||
iex=1;
|
||||
}
|
||||
}
|
||||
while (iex>0);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user