1 /* 2 3 * Copyright (c) 1984, 1985, 1986 AT&T 4 * All Rights Reserved 5 6 * THIS IS UNPUBLISHED PROPRIETARY SOURCE 7 * CODE OF AT&T. 8 * The copyright notice above does not 9 * evidence any actual or intended 10 * publication of such source code. 11 12 */ 13 14 /* @(#)gsort.c 1.1 */ 15 16 /* 17 * gsort - sort an array of strings 18 * 19 * David Korn 20 * AT&T Bell Laboratories 21 * Room 5D-112 22 * Murray Hill, N. J. 07974 23 * Tel. x7975 24 * 25 * Derived from Bourne Shell 26 */ 27 28 extern int strcmp(); 29 30 /* 31 * sort the array of strings argv with n elements 32 */ 33 34 void gsort(argv,n) 35 char *argv[]; 36 { 37 register int i, j, m; 38 int k; 39 for(j=1; j<=n; j*=2); 40 for(m=2*j-1; m/=2;) 41 { 42 k=n-m; 43 for(j=0; j<k; j++) 44 { 45 for(i=j; i>=0; i-=m) 46 { 47 register char **ap; 48 ap = &argv[i]; 49 if(strcmp(ap[m],ap[0])>0) 50 break; 51 else 52 { 53 char *s; 54 s=ap[m]; 55 ap[m]=ap[0]; 56 ap[0]=s; 57 } 58 } 59 } 60 } 61 } 62 63