# 05/15 https://hackmd.io/@-JG915ddTbSXM0tfs4kLTw/HkBKgO8r3 ## hw1 ```c= #include <stdio.h> #include <stdlib.h> int a(const void *a, const void *b) { int numA = *(int*)a; int numB = *(int*)b; if (numA < numB) { return -1; } else if (numA > numB) { return 1; } else { return 0; } } int b(const void *a, const void *b) { int numA = *(int*)a; int numB = *(int*)b; if (numA > numB) { return -1; } else if (numA < numB) { return 1; } else { return 0; } } int c(const void *a, const void *b) { int numA = *(int*)a; int numB = *(int*)b; int isOddA = numA % 2; int isOddB = numB % 2; if (isOddA && !isOddB) { return -1; } else if (!isOddA && isOddB) { return 1; } else if (isOddA && isOddB) { if (numA < numB) { return -1; } else if (numA > numB) { return 1; } else { return 0; } } else { return 0; } } int main() { int arr[] = {9, 5, 2, 7, 1, 3, 6, 4, 8}; int size = sizeof(arr) / sizeof(arr[0]); qsort(arr, size, sizeof(int), a); printf("small to large:\n"); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); qsort(arr, size, sizeof(int), b); printf("large to small:\n"); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); qsort(arr, size, sizeof(int), c); printf(" (odd numbers first, then even numbers, small to large):\n"); for (int i = 0; i < size; i++) { printf("%d ", arr[i]); } printf("\n"); return 0; } ```