/* * Program to demonstrate bubble sort, using dynamically allocated array. */ #include #include #include void printarray(int size, int nums[]) { for (int i = 0; i < size; ++i) { printf("nums[%d] is %d\n", i, nums[i]); } } void fillwithrandom(int seed, int size, int nums[]) { srand(seed); for (int i = 0; i < size; ++i) { nums[i] = rand(); } } /* return number of comparisons */ long long bubble_sort(int size, int nums[]) { long long count = 0; for (int num_to_sort = size; num_to_sort > 1; --num_to_sort) { for (int i = 0; i < num_to_sort-1; ++i) { count += 1; if (nums[i] > nums[i+1]) { int temp = nums[i]; nums[i] = nums[i+1]; nums[i+1] = temp; } } } return count; } bool check_sorted(int size, int nums[]) { for (int i = 0; i < size-1; ++i) { if (nums[i] > nums[i+1]) { return false; } } return true; } int main(void) { printf("enter array size, seed\n"); int asize; int seed; if (scanf("%d %d", &asize, &seed) != 2) { printf("error\n"); return 1; } int *nums = malloc(sizeof(*nums) * asize); fillwithrandom(seed, asize, nums); /* printarray(asize, nums); */ printf("%lld comparisons\n", bubble_sort(asize, nums)); /* printf("\n"); printarray(asize, nums); printf("\n"); */ printf("sorted? %c\n", check_sorted(asize, nums) ? 'y' : 'n'); free(nums); return 0; }