fork download
  1. #include <stdio.h>
  2. void swap(int* arr, int x, int y) {
  3. int temp = arr[x];
  4. arr[x] = arr[y];
  5. arr[y] = temp;
  6. }
  7. int partition(int* arr, int p, int r) {
  8. int x = arr[r];
  9. int i = p - 1;
  10. for (int j = 0; j < r; j++) {
  11. if (arr[j] <= x) {
  12. i++;
  13. swap(arr, i, j);
  14. }
  15. }
  16. i++;
  17. swap(arr, i, r);
  18. return i;
  19. }
  20.  
  21. void quick(int* arr, int p, int r) {
  22. if (p < r) {
  23. int q = partition(arr, p, r);
  24. quick(arr, p, q - 1);
  25. quick(arr, q + 1, r);
  26. }
  27. }
  28. int main(void) {
  29. // your code goes here
  30. int n = 0;
  31. scanf("%d", &n);
  32. int* arr = (int*)malloc(sizeof(int)*5000);
  33. int cnt = 1;
  34. for (int i = 0; i < n; i++) {
  35. scanf("%d", arr + i);
  36. if (i % 5000 == 0) {
  37. realloc(arr, sizeof(int) * 5000 * cnt);
  38. cnt++;
  39. }
  40. }
  41. quick(arr, 0, n - 1);
  42. for (int i = 0; i < n; i++) {
  43. printf("%d", arr[i]);
  44. }
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 4512KB
stdin
Standard input is empty
stdout
Standard output is empty