/* sort.c — Sorting algorithms demo for Pactor64 */ #include "libc.h" #define SIZE 10 static void fill_array(int arr[], int n) { /* Simple pseudo-random fill */ unsigned long s = 42; for (int i = 0; i < n; i++) { s = s * 6364136223846793005ULL + 1442695040888963407ULL; arr[i] = (int)(s % 100); } } static void print_array(const char *label, int arr[], int n) { printf(" %s: [", label); for (int i = 0; i < n; i++) { printf("%d", arr[i]); if (i < n - 1) printf(", "); } printf("]\n"); } static void bubble_sort(int arr[], int n) { for (int i = 0; i < n - 1; i++) for (int j = 0; j < n - i - 1; j++) if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } static void insertion_sort(int arr[], int n) { for (int i = 1; i < n; i++) { int key = arr[i], j = i - 1; while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } arr[j + 1] = key; } } int main(int argc, char **argv) { printf("=== Sorting Algorithms Demo ===\n\n"); int arr1[SIZE], arr2[SIZE]; fill_array(arr1, SIZE); /* Copy for second sort */ for (int i = 0; i < SIZE; i++) arr2[i] = arr1[i]; print_array("Original", arr1, SIZE); printf("\n"); bubble_sort(arr1, SIZE); print_array("Bubble sort ", arr1, SIZE); insertion_sort(arr2, SIZE); print_array("Insertion sort", arr2, SIZE); /* Verify both sorted the same */ int match = 1; for (int i = 0; i < SIZE; i++) if (arr1[i] != arr2[i]) match = 0; printf("\n Results match: %s\n", match ? "YES" : "NO"); printf("\nDone!\n"); return 0; }