int insert( input, n, r, A ) dataarray input, r; int n, *A; { extern int m, m2; int d, i, ia, ib, iup, j; datarecord tempr; if( m < n ) return(0); for( i=0; i1; ) { if (d<5) d = 1; else d = (5*d-1)/11; for ( i=n-1-d; i>=0; i-- ) { tempr = input[i]; ia = tempr.k % m2; for ( j=i+d; j ib); j+=d ) input[j-d] = input[j]; input[j-d] = tempr; } } for( i=0; i= iup ) break; for( j--; j >= i; j-- ) r[hashfunction(A[ia],input[j].k)].k = NOKEY; } if( ib >= 9*m ) /* Cannot build optimal hashing table with m and m2 */ return(0); } return(1); }