6 function middle(x,y,z) #return middle of 3
9 { if ( z >= y ) return y
14 if ( z >= x ) return x
20 function isort(A , n, i, j, hold)
22 # if needed a sentinal at A[0] will be created
24 for( i = 2 ; i <= n ; i++)
27 while ( A[j-1] > hold )
28 { j-- ; A[j+1] = A[j] }
36 function qsort(A, left, right ,i , j, pivot, hold)
39 pivot = middle(A[left], A[int((left+right)/2)], A[right])
46 while ( A[i] < pivot ) i++
47 while ( A[j] > pivot ) j--
56 if ( j - left > BLOCK ) qsort(A,left,j)
57 if ( right - i > BLOCK ) qsort(A,i,right)
63 { line[NR] = $0 "" # sort as string
68 if ( NR > BLOCK ) qsort(line, 1, NR)
72 for(i = 1 ; i <= NR ; i++) print line[i]