summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/qsort1.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/EXAMPLES/qsort1.c')
-rw-r--r--reference/C/EXAMPLES/qsort1.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/reference/C/EXAMPLES/qsort1.c b/reference/C/EXAMPLES/qsort1.c
new file mode 100644
index 0000000..b078ab4
--- /dev/null
+++ b/reference/C/EXAMPLES/qsort1.c
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * Purpose: To sort numbers held in an array.
+ * Author: M.J.Leslie
+ * Date: 30-Nov-94
+ *
+ ************************************************************************/
+
+/********** Preprocessor ***********************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+/********** Functions ***************************************************/
+
+void display_nums(int *, int);
+int comp_nums(const int *, const int *);
+
+/********** main ********************************************************/
+
+main()
+{
+ int numbers[]= /* Numbers to be sorted. */
+ {43,76,23,1,100,56,23,99,33,654};
+
+ int how_many=10; /* Number of numbers entered */
+
+
+ puts("\nThese are the unsorted numbers\n");
+ display_nums(numbers, how_many);
+
+ /* SORT the numbers held in
+ * 'numbers'. */
+ qsort(
+ numbers, /* Pointer to elements */
+ how_many, /* Number of elements */
+ sizeof(int), /* size of one element. */
+ (void *)comp_nums /* Pointer to comparison function */
+ );
+
+ puts("\nThese are the sorted numbers\n");
+ display_nums(numbers, how_many);
+}
+
+/************************************************************************
+ *
+ * comp_nums: Compare two numbers.
+ *
+ ************************************************************************/
+
+int comp_nums(const int *num1, const int *num2)
+{
+ if (*num1 < *num2) return -1;
+ if (*num1 == *num2) return 0;
+ if (*num1 > *num2) return 1;
+}
+
+/************************************************************************
+ *
+ * display_nums: Display the numbers
+ *
+ ************************************************************************/
+
+void display_nums(int *array, int count)
+{
+ /* Print all the elements in
+ * the array. */
+ while ( count-- )
+ {
+ printf("%d ",*array);
+ array++;
+ }
+ puts("");
+}
+
+/******* The Results ****************************************************
+ *
+ * These are the unsorted numbers
+ *
+ * 43 76 23 1 100 56 23 99 33 654
+ *
+ * These are the sorted numbers
+ *
+ * 1 23 23 33 43 56 76 99 100 654
+ *
+ ************************************************************************/