Presentation is loading. Please wait.

Presentation is loading. Please wait.

Trace of QuickSort Algorithm. quickSort(array, lower, upper) { // Base Case if (lower >= upper) { we’re done } else { partition array around pivot value.

Similar presentations


Presentation on theme: "Trace of QuickSort Algorithm. quickSort(array, lower, upper) { // Base Case if (lower >= upper) { we’re done } else { partition array around pivot value."— Presentation transcript:

1 Trace of QuickSort Algorithm

2 quickSort(array, lower, upper) { // Base Case if (lower >= upper) { we’re done } else { partition array around pivot value array[lower] pos contains the new location of pivot value quickSort array up to pos: quickSort(array,lower,pos) quickSort array after pos: quickSort(array,pos+1,upper) }

3 partition(array, lower, upper) { pivot is array[lower] while (true) { scan from right to left using index called RIGHT STOP when locate an element that should be left of pivot scan from left to right using index called LEFT stop when locate an element that should be right of pivot swap array[RIGHT] and array[LEFT] if (RIGHT and LEFT cross) pos = location where LEFT/RIGHT cross swap pivot and array[pos] all values left of pivot are <= pivot all values right of pivot are >= pivot return pos end pos }

4 6591234 012345 quickSort(arr,0,5)

5 6591234 012345 partition(arr,0,5)

6 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) pivot= ? Partition Initialization...

7 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) pivot=6 Partition Initialization...

8 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left pivot=6 Partition Initialization...

9 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6 Partition Initialization...

10 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6 right moves to the left until value that should be to left of pivot...

11 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6

12 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6 left moves to the right until value that should be to right of pivot...

13 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6

14 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6

15 quickSort(arr,0,5) 6591234 012345 partition(arr,0,5) left right pivot=6 swap arr[left] and arr[right]

16 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) left right pivot=6 repeat right/left scan UNTIL left & right cross

17 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) left right pivot=6 right moves to the left until value that should be to left of pivot...

18 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) left right pivot=6

19 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) left right pivot=6 left moves to the right until value that should be to right of pivot...

20 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) leftright pivot=6

21 quickSort(arr,0,5) 6541239 012345 partition(arr,0,5) leftright pivot=6 swap arr[left] and arr[right]

22 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) leftright pivot=6 swap arr[left] and arr[right]

23 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) leftright pivot=6 repeat right/left scan UNTIL left & right cross

24 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) leftright pivot=6 right moves to the left until value that should be to left of pivot...

25 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) left right pivot=6

26 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) left right pivot=6 right & left CROSS!!!

27 quickSort(arr,0,5) 6543129 012345 partition(arr,0,5) left right pivot=6 right & left CROSS!!! 1 - Swap pivot and arr[right]

28 quickSort(arr,0,5) 3546129 012345 partition(arr,0,5) left right pivot=6 right & left CROSS!!! 1 - Swap pivot and arr[right]

29 quickSort(arr,0,5) 3546129 012345 partition(arr,0,5) left right pivot=6 right & left CROSS!!! 1 - Swap pivot and arr[right] 2 - Return new location of pivot to caller return 3

30 quickSort(arr,0,5) 3546129 012345 Recursive calls to quickSort() using partitioned array... pivot position

31 quickSort(arr,0,5) 3546129 012345 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45

32 quickSort(arr,0,5) quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3)

33 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) Partition Initialization... quickSort(arr,0,5)

34 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) Partition Initialization... quickSort(arr,0,5)

35 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) Partition Initialization... left quickSort(arr,0,5)

36 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) Partition Initialization... left right quickSort(arr,0,5)

37 right moves to the left until value that should be to left of pivot... quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right quickSort(arr,0,5)

38 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right quickSort(arr,0,5)

39 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right quickSort(arr,0,5)

40 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right quickSort(arr,0,5)

41 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right right & left CROSS!!! quickSort(arr,0,5)

42 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right right & left CROSS!!! 1 - Swap pivot and arr[right] quickSort(arr,0,5)

43 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 partition(arr,0,3) left right right & left CROSS!!! 1 - Swap pivot and arr[right] right & left CROSS!!! 1 - Swap pivot and arr[right] 2 - Return new location of pivot to caller return 0 quickSort(arr,0,5)

44 quickSort(arr,0,3) 3546 0123 quickSort(arr,4,5) 129 45 quickSort(arr,0,5) Recursive calls to quickSort() using partitioned array...

45 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123

46 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 Base case triggered... halting recursion.

47 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 Base Case: Return

48 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) Partition Initialization...

49 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) Partition Initialization...

50 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) Partition Initialization... left

51 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right right moves to the left until value that should be to left of pivot...

52 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right

53 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right left moves to the right until value that should be to right of pivot...

54 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right

55 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right right & left CROSS!

56 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 546 123 partition(arr,1,3) left right right & left CROSS! 1- swap pivot and arr[right]

57 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 456 123 partition(arr,1,3) left right right & left CROSS! 1- swap pivot and arr[right]

58 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) 456 123 partition(arr,1,3) left right right & left CROSS! 1- swap pivot and arr[right] 2 – return new position of pivot return 2

59 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 456 12 3

60 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 456 12 3 partition(arr,1,2)

61 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 456 12 3

62 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12

63 quickSort(arr,0,3) quickSort(arr,4,5) 129 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 partition(arr,4,5)

64 quickSort(arr,0,3) quickSort(arr,4,5) 912 45 quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 partition(arr,4,5)

65 quickSort(arr,0,3) quickSort(arr,4,5) quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 quickSort(arr,4,5) 912 45 quickSort(arr,6,5)

66 quickSort(arr,0,3) quickSort(arr,4,5) quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 quickSort(arr,4,5) 912 45 partition(arr,4,5) quickSort(arr,6,5)

67 quickSort(arr,0,3) quickSort(arr,4,5) quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 quickSort(arr,4,5) 912 45 quickSort(arr,6,5)

68 quickSort(arr,0,3) quickSort(arr,4,5) quickSort(arr,0,5) quickSort(arr,0,0) 3 0 quickSort(arr,1,3) quickSort(arr,1,2)quickSort(arr,3,3) 6 3 quickSort(arr,1,1)quickSort(arr,2,2) 45 12 quickSort(arr,4,5) 9 12 4 5 quickSort(arr,4,4) quickSort(arr,5,5) quickSort(arr,6,5)


Download ppt "Trace of QuickSort Algorithm. quickSort(array, lower, upper) { // Base Case if (lower >= upper) { we’re done } else { partition array around pivot value."

Similar presentations


Ads by Google