Quick Sort in C

Quick Sort in C
Satyam Chaudhary
Data Structure Jun 10, 2023

In this article we will discuss about the Quick sort Algorithm. The working procedure of quick sort is simple. This algorithm will helpful for their academic purpose. Quick Sort is faster and highly efficient sorting algorithm.

It follows divide and conquer technique. It is a technique of breaking down the algorithm to subproblem and combining the result back together to solve the original problem. Merge Sort also follows this divide and conquer technique.

Quick Sort picks an element as pivot. A large array is divided into two arrays, one side (left hand part)holds the values which are smaller than pivot and other side (right hand part) of the array holds the element greater than pivot.

Then those two arrays are further partitioned using the same approach. This process continues till single elements remain in the sub array.

Working of Quick Sort Algorithm

Now let' see the working of Quick Sort Algorithm.

To understand the working let us take an unsorted array(unsorted array means the data present in the array is in jumbled order that is neither in ascending order nor descending)and start sorting it using Quick Sort Algorithm.

Lets start by taking the array elements.

fig 1:Example of an array

How to choose Pivot?

Picking a good pivot is necessary for the fast implementation of quicksort. However, it is typical to determine a good pivot. Some of the ways of choosing a pivot are as follows -

  • Pivot can be random, i.e. select the random pivot from the given array.

  • Pivot can be the first element of the given array.

  • Pivot can be the second element of the given array.

  • Pick median as the pivot.

Lets proceed towards sorting the array by Quick Sort

In the given array figure 1 we have to consider the left most index as Start and the right most index as End. We are taking the left most index as our pivot.

So we got

a[start]=35

a[pivot]=35

a[end]=40

Lets represent them into the given array

fig 2:Representing start, pivot and end

We have represented, now just to quick memorize that Quick sort divides a large array into two arrays in which one side i.e. left part hold elements lesser than the pivot and the other side i.e. the right hand part hold elements greater than the pivot.

As our pivot is at start so algorithm will start from End and move towards Start .

Now there are some conditions we have to follow when pivot is at left

  • When any element is greater than pivot then End will move forward one position towards Start

  • When any element is less than pivot a swap will occur both Pivot and End will get swapped.

In fig 2 a[End] > a[Pivot] i.e. element is greater than pivot which is our case (1) so End will move one position towards Start.

fig 3:End moves one position towards start

In fig 3 a[End] < a[Pivot] i.e. element is less than pivot which is our case (2) so End and pivot will be swapped.

Let swap both of them.

fig 4:Pivot and End are swapped

Now in fig 4: Pivot is at End so algorithm will start form Start and move towards from End

Now there are some conditions we have to follow when pivot is at Right

  • When any element is less than pivot then Start will move one position towards End.

  • When any element is greater than pivot a swap will occur both Pivot and Start will get swapped.

In fig 4 a[start] < a[Pivot], element is less than pivot so Start will move one position towards End

fig 5:Start is moved one position towards End

Now in fig 5 again a[start] < a[pivot] i.e. element is less than pivot so Start will move one position towards End

fig 6:Start is moved one position towards End

Here in fig 6 a[start] > a[pivot] i.e. element is greater than pivot so swap will occur both Pivot and Start will get swapped.

fig 7:Start and Pivot are swapped

As our pivot is at start so algorithm will start from End and move towards Start .

Those condtion will be applicable when Pivot is at start

In fig 7 a[End] > a[Pivot] i.e. element is greater than pivot so End will move one position towards Start

fig 8:End is moved one position towards Start

Now in fig 8 a[End] < a[pivot] i.e. element is less than pivot so swap will occur both Pivot and End will get swapped.

fig 9:End and Pivot are swapped

Now in fig 9: Pivot is at End so algorithm will start form Start and move towards from End

Same conditions will be applied when Pivot is at End

Here in fig 9 a[start] < a[pivot] i.e. element is less than pivot so Start will move one position towards End

fig 9:Start is moved one position, start pivot and End are in same position

Element 35, which is the pivot element is placed at its exact position.

So our array will represented as given below

fig 10:Array is divided

Elements that are right side of element 35 are greater than it, and the elements that are left side of element 35 are smaller than it.

Now, in a similar manner, quick sort algorithm is separately applied to the left and right sub-arrays.

After sorting gets done, the array will be -

fig 11:Sorting using Quick Sort Completed

If you want how the Left and Right sub arrays are sorted click here

As we have learned the working of Quick Sort Lets proceed towards the Pseudo Code.

Pseudo Code Of Quick Sort

We are moving towards the Algorithm of Insertion Sort.

Algorithm of Quick Sort

Quick Sort Program in C

Fig 12: Output

Time Complexity

Now let's see the Time complexity of Quick Sort in Best case, worst case, Average case. We will also be learning about space complexity.

Fig 14: Time Complexity of Quick Sort

Best Case: In Quick Sort best case occur when the array is already sorted.

Worst Case: Worst Case occurs when we have to sort the array elements in ascending order, but its elements are in descending order.

Average Case: Average Case of Quick Sort occurs when the element are in jumbled order i,e. neither in ascending nor in descending order.

Space Complexity

Fig 15: Space Complexity of Insertion Sort

Advantage of Quick Sort

  • Quick sort is the most favored users’ choice to perform sorting functions quickly and efficiently. It allows users to achieve the same result much quicker than other sorting algorithms.

  • Quick sort algorithm is faster in an environment like virtual memory, as it manifests good cache locality.

  • Quick sort has a space complexity of O(logn), making it a suitable algorithm when you have restrictions in space availability.

Disadvantage of Quick Sort

  • One of the biggest disadvantages of Quick Sort is that it can consume a lot of memory when sorting large arrays.

  • Quick sort is undoubtedly a fast and efficient sorting algorithm, but when it comes to stability, you might want to reconsider your options. This sorting algorithm is regarded unstable as it does not retain the original order of the key-value pair.

  • Major disadvantage occurs when the largest or smallest element is the pivot, or when all the elements are the same size. Both of these worst-case scenarios greatly affect the speed of the quick sort.

When to use Quick Sort

  • The sorting algorithm is used for information searching and as Quicksort is the fastest algorithm so it is widely used as a better way of searching.

  • Quicksort is a cache-friendly algorithm as it has a good locality of reference when used for arrays.

  • If data is sorted then the search for information became easy and efficient

Conclusion

So far our Insertion Sort article comes to an end but before ending we just conclude what are the things that we have learned today.

To conclude, it can be said that

  • Quick Sort method sorts the elements using the Divide and Conquer approach and has an average O(nLogn) complexity

  • In quicksort , we repeatedly divide the array into smaller sub arrays until there is only one element present in they array and sort the array recursively

  • Quick sort is the most favored users’ choice to perform sorting functions quickly and efficiently. It allows users to achieve the same result much quicker than other sorting algorithms.

sorting methods
sorting algorithms in data structure
quick sort program
quick sort in c

Satyam Chaudhary


Satyam is a brilliant Engineering Undergraduate and proud Indian. He is passoinate towards web development and acquiring new skills.

He help students in understanding the concepts with a correct approach and solve their academic problems.

We are here to clear your doubts with an easy step by step approach.