Answered step by step
Verified Expert Solution
Question
1 Approved Answer
Change low , high , and middle to be pointers to array elements rather than integers representing the array indices. Change the split function to
Change low , high , and middle to be pointers to array elements rather than integers representing the array indices. Change the split function to return a pointer, not an integer.
/* Sorts an array of integers using Quicksort algorithm */ /* Copyright K.N. King -- C programming Ch9.6 */ #include#define N 10 void quicksort(int a[], int low, int high); int split(int a[], int low, int high); int main(void){ int a[N], i; printf("Enter %d numbers to be sorted: ", N); for(i = 0; i < N; i++) scanf("%d", &a[i]); quicksort(a, 0, N - 1); printf("In sorted order: "); for (i = 0; i < N; i++) printf("%d ", a[i]); printf(" "); return 0; } void quicksort(int a[], int low, int high){ int middle; if (low >= high) return; middle = split(a, low, high); quicksort(a, low, middle - 1); quicksort(a, middle + 1, high); } int split(int a[], int low, int high){ int part_element = a[low]; for(;;){ while (low < high && part_element <= a[high]) high--; if(low >= high) break; a[low++] = a[high]; while (low < high && a[low] <= part_element) low++; if (low >= high) break; a[high--] = a[low]; } a[high] = part_element; return high; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started