Few test cases failed for right code

please check my code it’s correct or not for quick sort.
following is my code:
def partition(a,si,ei):
pivot=a[si]

c=0
for i in range(si,ei+1):
    if a[i]<pivot:
        c+=1
a[si+c],a[si]=a[si],a[si+c]
pivot_index=si+c

i=si
j=ei
while i<j:
    if a[i]<pivot:
        i+=1
    elif a[j]>pivot:
        j-=1
    else:
        a[i],a[j]=a[j],a[i]
        i+=1
        j-=1
return pivot_index

def quick_sort(a,si,ei):
if si>=ei:
return
pivot_index=partition(a,si,ei)

quick_sort(a,si,pivot_index-1)
quick_sort(a,pivot_index+1,ei)

n=int(input())
li=[int(i) for i in input().strip().split()]

ei=len(li)-1
quick_sort(li,0,ei)

for i in li:
print(i,end=’ ')

Hey @pasta, complexity of normal quick sort in worst case comes out to be O(n^2) and hence your code will fail for that case. Read about Randomized quick sort and implement that.

If your doubt is resolved, plz mark it as resolved in my doubts section. :blush: