Skip to main content

Quick Sort for Singly Linked List using Python

Quick Sort: It's basically works on divide and conquer method, choose pivot as first node,last ,middle and make partition and swap values.

 

First Check out Basic Operation on Singly Linked list.

Code:

class Node:
def __init__(self, data=None):
self.data = data
self.next = None

class LinkedList:
def __init__(self):
self.head = None
""" Quick Sort"""
# it's basically works on divide on conquer method
# in this function we'll swap values and return pivot
def partition(self, start, end):
pivot = start # taking start(first node) as pivot
cur = start
while (cur != None and cur != end):
if (cur.data < end.data):
pivot = start
start.data, cur.data = cur.data,start.data
start = start.next
cur = cur.next
start.data,end.data = end.data, start.data
return pivot

def quickSort(self, start, end):
#base case
if start == end:
return
#setting up pivot
pivot = self.partition(start, end)
# recursion
if (pivot != None and pivot.next != None):
self.quickSort(pivot.next, end)

if (pivot != None and start != pivot):
self.quickSort(start, pivot)

 

Time Complexity:

  • Best: 𝛺(n*log n)
  • Average:Θ(n*log n)
  • Worst: O(n*n)

Tip: If we take take pivot wisely(random pivot would be great choice) then worst case can reduced to O(n*log n)

 Space Complexity: O(1)

Note: if You have any suggestion put in comments.

Thank You 😊😊

Other Sorting Algorithms:

 

 

Comments

Popular posts from this blog

Makefile

 You may have seen file named Makefile or you may have type command like make, make install. so what is this file Makefile and what are this command. let's discuss about it.

Products Which I like

Induction Buy now Induction Buy now

Pascal's Triangle

 Pascal's Triangle Introduction In mathematics, Pascal’s triangle is triangular array of binomial coefficient. below you can see how it looks like… 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 How to Build it? First of all start with “1” and second rows as “1 1” then we can clearly see every element in next rows(except 1) if sum of two elements from above row. (i.e, 1+1=2, 1+2=3, 1+3=4) and with this rules we can create pascal’s triangle of n rows. Below is visual of how it will look like, Formula let’s take 0th row as first row and 0th column as first column, so we can get each value using formula where n is row number and k is column number. so for finding 1st(0 indexed) element in 2nd row we can write 2C1 which will give 2. There is one another technique, in which we need to solve (x + y)^n for nth row, if we solve (x +y)² then we will get 2nd row as coefficient of x and y in this solved formula which is x² + 2xy + y² . coefficients are (...