Guest User

Untitled

a guest
May 25th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.62 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3.  
  4. #define MAX 9
  5.  
  6. int intArray[MAX] = {1, 3, 9, 4, 11, 34, 2, 8, 10};
  7.  
  8. void printline(int count) {
  9. int i;
  10.  
  11. for(i = 0;i < count-1;i++) {
  12. printf("=");
  13. }
  14.  
  15. printf("=\n");
  16. }
  17.  
  18. void display() {
  19. int i;
  20. printf("[");
  21.  
  22. // navigate through all items
  23. for(i = 0;i < MAX;i++) {
  24. printf("%d ",intArray[i]);
  25. }
  26.  
  27. printf("]\n");
  28. }
  29.  
  30. void swap(int num1, int num2) {
  31. int temp = intArray[num1];
  32. intArray[num1] = intArray[num2];
  33. intArray[num2] = temp;
  34. }
  35.  
  36. int partition(int left, int right, int pivot) {
  37. int leftPointer = left -1;
  38. int rightPointer = right;
  39.  
  40. while(true) {
  41. while(intArray[++leftPointer] < pivot) {
  42. //do nothing
  43. }
  44.  
  45. while(rightPointer > 0 && intArray[--rightPointer] > pivot) {
  46. //do nothing
  47. }
  48.  
  49. if(leftPointer >= rightPointer) {
  50. break;
  51. } else {
  52. printf(" item swapped :%d,%d\n", intArray[leftPointer],intArray[rightPointer]);
  53. swap(leftPointer,rightPointer);
  54. }
  55. }
  56.  
  57. printf(" pivot swapped :%d,%d\n", intArray[leftPointer],intArray[right]);
  58. swap(leftPointer,right);
  59. printf("Updated Array: ");
  60. display();
  61. return leftPointer;
  62. }
  63.  
  64. void quickSort(int left, int right) {
  65. if(right-left <= 0) {
  66. return;
  67. } else {
  68. int pivot = intArray[right];
  69. int partitionPoint = partition(left, right, pivot);
  70. quickSort(left,partitionPoint-1);
  71. quickSort(partitionPoint+1,right);
  72. }
  73. }
  74.  
  75. int main() {
  76. printf("Input Array: ");
  77. display();
  78. printline(50);
  79. quickSort(0,MAX-1);
  80. printf("Output Array: ");
  81. display();
  82. printline(50);
  83. }
Add Comment
Please, Sign In to add comment