1 int in
[] = {10, 32, -1, 567, 3, 18, 1, -51, 789, 0};
6 sort(in
, (sizeof in
)/(sizeof in
[0]));
7 for (i
= 0; i
< (sizeof in
)/(sizeof in
[0]); i
++) {
14 /* putd - output decimal number */
27 /* sort - sort a[0..n-1] into increasing order */
29 quick(xx
= a
, 0, --n
);
32 /* quick - quicksort a[lb..ub] */
33 quick(a
, lb
, ub
) int a
[]; {
38 k
= partition(a
, lb
, ub
);
43 /* partition - partition a[i..j] */
44 int partition(a
, i
, j
) int a
[]; {
51 i
++; while (a
[i
] < v
) i
++;
52 j
--; while (a
[j
] > v
) j
--;
53 if (i
< j
) exchange(&a
[i
], &a
[j
]);
55 exchange(&a
[k
], &a
[j
]);
59 /* exchange - exchange *x and *y */
60 exchange(x
, y
) int *x
, *y
; {
63 printf("exchange(%d,%d)\n", x
- xx
, y
- xx
);
64 t
= *x
; *x
= *y
; *y
= t
;