#include <stdio.h>
void swap(int A[], int i, int j) {
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
// PARTITION(A, p, r)
int partition(int A[], int p, int r) {
int x = A[r]; // pivot
int i = p - 1;
for (int j = p; j < r; j++) { // FIXED: j < r
if (A[j] <= x) {
i++;
swap(A, i, j);
}
}
swap(A, i + 1, r);
return i + 1;
}
// QUICKSORT(A, p, r)
void quicksort(int A[], int p, int r) {
if (p < r) {
int q = partition(A, p, r);
quicksort(A, p, q - 1);
quicksort(A, q + 1, r);
}
}
int main() {
int n;
printf("ENTER THE NUMBER OF ELEMENTS: ");
scanf("%d", &n);
int A[100]; // fixed size array
printf("ENTER %d ELEMENTS:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &A[i]);
}
quicksort(A, 0, n - 1);
printf("SORTED ARRAY:\n");
for (int i = 0; i < n; i++) {
printf("%d ", A[i]); // FIXED: print value, not address
}
printf("\n");
return 0;
}
Comments
Post a Comment