fork download
  1. #include <stdio.h>
  2.  
  3. void swap(int *a, int *b);
  4. void printArray(int *arr, int size);
  5.  
  6. int partition(int *arr, int lo, int hi) {
  7. int pivot = arr[hi];
  8.  
  9. int i = lo - 1;
  10.  
  11. for (int j = lo; j <= hi - 1; j++) {
  12. if (arr[j] < pivot) {
  13. i++;
  14. swap(&arr[i], &arr[j]);
  15. }
  16. }
  17.  
  18. swap(&arr[i + 1], &arr[hi]);
  19.  
  20. return i + 1;
  21. }
  22.  
  23. void quicksort(int *arr, int lo, int hi) {
  24. if (lo < hi) {
  25. int pi = partition(arr, lo, hi);
  26.  
  27. quicksort(arr, lo, pi - 1);
  28. quicksort(arr, pi + 1, hi);
  29. }
  30. }
  31.  
  32. int main(void) {
  33. int c;
  34. scanf("%d", &c);
  35.  
  36. int arr[c];
  37. for (int i = 0; i < c; i++) {
  38. scanf("%d", &arr[i]);
  39. }
  40.  
  41. quicksort(arr, 0, c - 1);
  42.  
  43. printArray(arr, sizeof(arr) / sizeof(arr[0]));
  44.  
  45. return 0;
  46. }
  47.  
  48. // BELOW IS BASIC FUNCTIONS TO SWAP AND PRINT THE ARRAY
  49.  
  50. void swap(int *a, int *b) {
  51. int temp = *a;
  52. *a = *b;
  53. *b = temp;
  54. }
  55.  
  56. void printArray(int *arr, int size) {
  57. printf("Sorted Array: \n");
  58.  
  59. for (int i = 0; i < size; i++) {
  60. printf("%d", arr[i]);
  61.  
  62. if (i + 1 < size) {
  63. printf(" ");
  64. }
  65. }
  66. }
Success #stdin #stdout 0s 5280KB
stdin
7
100 3 85 -4 1 33 11
stdout
Sorted Array: 
-4 1 3 11 33 85 100