Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. void myQuickSort(int arr[], int size, int low, int high);
  4. void swapItem(int arr[], int i, int j);
  5. void printarr(int arr[], int length);
  6.  
  7. int main(void)
  8. {
  9. int arr[] = { 1, 4, 5, 4, 1, 8, 9, 3, 12, 10, 9, 10};
  10. int length = 12;
  11. printarr(arr, length);
  12. myQuickSort(arr, length, 0, length - 1);
  13. printarr(arr, length);
  14. }
  15.  
  16. void myQuickSort(int arr[], int size, int low, int high)
  17. {
  18. if(low < high) {
  19. int pivot = arr[high];
  20. int j = high;
  21. for(int i = low; i < j; i++)
  22. {
  23. if(arr[i] > pivot)
  24. {
  25. // don't swap if arr[j-1] is already bigger than pivot
  26. while(i < j-1 && arr[j-1] > pivot) --j;
  27. swapItem(arr, i, --j);
  28. printarr(arr, size);
  29. }
  30. }
  31.  
  32. // if we swaped before, move pivot to middle
  33. if(j != high) swapItem(arr, high, j);
  34.  
  35. // leave the pivot, sort left and right sides
  36. myQuickSort(arr, size, low, j-1);
  37. myQuickSort(arr, size, j+1, high);
  38. }
  39. }
  40.  
  41. void swapItem(int arr[], int i, int j)
  42. {
  43. int temp = arr[i];
  44. arr[i] = arr[j];
  45. arr[j] = temp;
  46. }
  47.  
  48. void printarr(int arr[], int length)
  49. {
  50. printf("Print ARR: ");
  51. for(int i = 0; i < length; i ++)
  52. {
  53. printf("%d ", arr[i]);
  54. }
  55. printf("\n");
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement