dnhirapara2104

Randomized Quicksort

Jul 17th, 2020
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.04 KB | None | 0 0
  1. import random as rd
  2. import matplotlib.pyplot as plt
  3.  
  4.  
  5. def partation(a, low, high):
  6.     global cnt
  7.     # ind = rd.randint(low, high)
  8.     # a[high], a[ind] = a[ind], a[high]
  9.     pivot = a[high]
  10.     i = low-1
  11.     for j in range(low, high):
  12.         cnt += 1
  13.         if a[j] < pivot:
  14.             i += 1
  15.             a[i], a[j] = a[j], a[i]
  16.     a[i+1], a[high] = a[high], a[i+1]
  17.     return i+1
  18.  
  19.  
  20. def quickSort(a, low, high):
  21.     if low <= high:
  22.         proper = partation(a, low, high)
  23.         quickSort(a, low, proper-1)
  24.         quickSort(a, proper+1, high)
  25.  
  26.  
  27. cnt = 0
  28. k = 4
  29.  
  30. arr1 = []
  31. for i in range(100):
  32.     # arr1.append(rd.randint(1, 1000))
  33.     arr1.append(1+i)
  34. swaps = []
  35. sample_range = 1000
  36. sample_map = []
  37. for i in range(1250):
  38.     sample_map.append(0)
  39. for i in range(sample_range):
  40.     arr = arr1[:]
  41.     cnt = 0
  42.     rd.shuffle(arr)
  43.     quickSort(arr, 0, len(arr)-1)
  44.     swaps.append(cnt)
  45.     sample_map[cnt] += 1
  46. plt.plot(range(1250), sample_map)
  47. plt.xlabel("No Of Swaps")
  48. plt.ylabel("Frequency Of Swapes")
  49. plt.show()
Add Comment
Please, Sign In to add comment