#include #include // A function to sort the algorithm using Odd Even sort void oddEvenSort(int a[], int n) { int isSorted = 0; // Initially array is unsorted int i; int h; while (!isSorted) { isSorted = 1; // Perform Bubble sort on odd indexed element for (i=1; i<=n-2; i=i+2) { if (a[i] > a[i+1]) { h = a[i]; a[i] = a[i+1]; a[i+1] = h; // swap(a[i], a[i+1]); isSorted = 0; } } // Perform Bubble sort on even indexed element for (int i=0; i<=n-2; i=i+2) { if (a[i] > a[i+1]) { h = a[i]; a[i] = a[i+1]; a[i+1] = h; // swap(a[i], a[i+1]); isSorted = 0; } } } return; } // A utility function ot print an array of size n void printArray(int a[], int n) { for (int i=0; i < n; i++) printf("%d ", a[i]); printf("\n"); } // Driver program to test above functions. int main (int argc, char *argv[]) { int *arr; int n; int i; if (argc < 2) { printf("Usage error: %s N (N=# elements in array to sort)\n", argv[0]); exit(1); } n = atoi( argv[1] ); arr = calloc(n, sizeof(int)); for ( i = 0 ; i < n; i++ ) arr[i] = rand()%1000000; oddEvenSort(arr, n); printArray(arr, n); return (0); }