Question: For this question: The code is incorrect because there may be multiple elements equal to the one we are partitioning around (x) and while the

For this question: The code is incorrect because there may be multiple elements equal to the one we are partitioning around (x) and while the counts lt, eq, gt are computed correctly, the x may not necessarily occur where they should. Fix this problem without changing the function names. Provided Code: Python, VS

For this question: The code is incorrect because there may be multiple

elements equal to the one we are partitioning around (x) and while

selection.py > partition 1 import random def swap(L,i,j): "" "swap list positions i and j"" t = L[i] L[i] = L[j] L[j] = t def partition(L): n = len(L) idx = random.randrange(n) print("idx is: ", n) #put L[idx] into oth position swap(1,0, idx) x = L[@] #It is number of elements less than L[idx], eq is number of elements equal #gt is number of elements greater than L[idx] (lt, eq,gt) = (0,1,0) (i,j) = (0,1) while (j x: gt = gt+1 j = j +1 else: if L[j] == x: eq = eq + 1 else: #L[j] partition 36 swap(L,i+1,j) 37 i = i + 1 j = j + 1 swap(1,0,i) return (lt,eq,gt,x) 38 39 def good_partition(L,T): n = len(L) (lt,eq,gt) = T if it > (3*n)/4 or gt > (3*n)/4: return false return True 46 47 def select(L,k): """return the kth element in "" n = len(L) if (n == 0): return None elif (k = n): return None #generate a good partition first (lt,eq,gt,x) = partition(L) while (not good_partition(L,(lt,eq,gt))); (lt,eq,gt,x) = partition(L) if k partition 1 import random def swap(L,i,j): "" "swap list positions i and j"" t = L[i] L[i] = L[j] L[j] = t def partition(L): n = len(L) idx = random.randrange(n) print("idx is: ", n) #put L[idx] into oth position swap(1,0, idx) x = L[@] #It is number of elements less than L[idx], eq is number of elements equal #gt is number of elements greater than L[idx] (lt, eq,gt) = (0,1,0) (i,j) = (0,1) while (j x: gt = gt+1 j = j +1 else: if L[j] == x: eq = eq + 1 else: #L[j] partition 36 swap(L,i+1,j) 37 i = i + 1 j = j + 1 swap(1,0,i) return (lt,eq,gt,x) 38 39 def good_partition(L,T): n = len(L) (lt,eq,gt) = T if it > (3*n)/4 or gt > (3*n)/4: return false return True 46 47 def select(L,k): """return the kth element in "" n = len(L) if (n == 0): return None elif (k = n): return None #generate a good partition first (lt,eq,gt,x) = partition(L) while (not good_partition(L,(lt,eq,gt))); (lt,eq,gt,x) = partition(L) if k

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!