1*7c478bd9Sstevel@tonic-gate /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ 2*7c478bd9Sstevel@tonic-gate /* All Rights Reserved */ 3*7c478bd9Sstevel@tonic-gate 4*7c478bd9Sstevel@tonic-gate 5*7c478bd9Sstevel@tonic-gate /* 6*7c478bd9Sstevel@tonic-gate * Copyright (c) 1980 Regents of the University of California. 7*7c478bd9Sstevel@tonic-gate * All rights reserved. The Berkeley software License Agreement 8*7c478bd9Sstevel@tonic-gate * specifies the terms and conditions for redistribution. 9*7c478bd9Sstevel@tonic-gate */ 10*7c478bd9Sstevel@tonic-gate 11*7c478bd9Sstevel@tonic-gate /* 12*7c478bd9Sstevel@tonic-gate * Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc. 13*7c478bd9Sstevel@tonic-gate * All Rights Reserved. 14*7c478bd9Sstevel@tonic-gate */ 15*7c478bd9Sstevel@tonic-gate 16*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 17*7c478bd9Sstevel@tonic-gate 18*7c478bd9Sstevel@tonic-gate /* 19*7c478bd9Sstevel@tonic-gate * SORTS UP. 20*7c478bd9Sstevel@tonic-gate * IF THERE ARE NO EXCHANGES (IEX=0) ON A SWEEP 21*7c478bd9Sstevel@tonic-gate * THE COMPARISON GAP (IGAP) IS HALVED FOR THE NEXT SWEEP 22*7c478bd9Sstevel@tonic-gate */ 23*7c478bd9Sstevel@tonic-gate shell (n, comp, exch) 24*7c478bd9Sstevel@tonic-gate int (*comp)(), (*exch)(); 25*7c478bd9Sstevel@tonic-gate { 26*7c478bd9Sstevel@tonic-gate int igap, iplusg, iex, i, imax; 27*7c478bd9Sstevel@tonic-gate igap=n; 28*7c478bd9Sstevel@tonic-gate while (igap > 1) 29*7c478bd9Sstevel@tonic-gate { 30*7c478bd9Sstevel@tonic-gate igap /= 2; 31*7c478bd9Sstevel@tonic-gate imax = n-igap; 32*7c478bd9Sstevel@tonic-gate do 33*7c478bd9Sstevel@tonic-gate { 34*7c478bd9Sstevel@tonic-gate iex=0; 35*7c478bd9Sstevel@tonic-gate for(i=0; i<imax; i++) 36*7c478bd9Sstevel@tonic-gate { 37*7c478bd9Sstevel@tonic-gate iplusg = i + igap; 38*7c478bd9Sstevel@tonic-gate if ((*comp) (i, iplusg) ) continue; 39*7c478bd9Sstevel@tonic-gate (*exch) (i, iplusg); 40*7c478bd9Sstevel@tonic-gate iex=1; 41*7c478bd9Sstevel@tonic-gate } 42*7c478bd9Sstevel@tonic-gate } 43*7c478bd9Sstevel@tonic-gate while (iex>0); 44*7c478bd9Sstevel@tonic-gate } 45*7c478bd9Sstevel@tonic-gate } 46