aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sort.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/sort.c')
-rw-r--r--test/sort.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/sort.c b/test/sort.c
new file mode 100644
index 0000000..af58917
--- /dev/null
+++ b/test/sort.c
@@ -0,0 +1,28 @@
+typedef unsigned long size_t;
+
+int printf(const char *, ...);
+void *calloc(size_t, size_t);
+void qsort(void *, size_t nmemb, size_t size, int (const void *, const void *));
+int atoi(const char *);
+
+int
+icmp(const void *a, const void *b)
+{
+ int l = *(int *)a, r = *(int *)b;
+ return (l > r) - (l < r);
+}
+
+int
+main(int argc, char **argv)
+{
+ int N = argc - 1;
+ int *xs = calloc(N, sizeof *xs);
+
+ for (int i = 0; i < N; ++i)
+ xs[i] = atoi(argv[i+1]);
+ qsort(xs, N, sizeof *xs, icmp);
+ for (int i = 0; i < N; ++i)
+ printf("%d, ", xs[i]);
+ printf("\n");
+ return N;
+}