illeas

q_sort

Jul 5th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. #include<stdio.h>
  2. void pointerSwap(int* a, int* b)
  3. {
  4. int temp;
  5. temp = *a;
  6. *a = *b;
  7. *b = temp;
  8. }
  9.  
  10. int partition (int arra[], int left, int right)
  11. {
  12. int pivot = arra[right];
  13. int i = (left - 1);
  14.  
  15. for (int j = left; j <= right- 1; j++)
  16. {
  17. if (arra[j] <= pivot)
  18. {
  19. i++;
  20. pointerSwap(&arra[i], &arra[j]);
  21. }
  22. }
  23. pointerSwap(&arra[i + 1], &arra[right]);
  24. return (i + 1);
  25. }
  26.  
  27. void qsort(int arra[], int left, int right)
  28. {
  29. if (left < right)
  30. {
  31. int pi = partition(arra, left, right);
  32. qsort(arra, left, pi - 1);
  33. qsort(arra, pi + 1, right);
  34. }
  35. }
  36.  
  37. void print(int arra[], int size)
  38. {
  39. int i;
  40. for (i=0; i < size; i++){
  41. printf("%d ", arra[i]);
  42. }
  43. }
  44. int main()
  45. {
  46. int arra[] = {10, 7, 8, 9, 1, 5};
  47. int n = sizeof(arra)/sizeof(arra[0]);
  48. qsort(arra, 0, n-1);
  49. print(arra, n);
  50. return 0;
  51. }
Add Comment
Please, Sign In to add comment