Join Our 4-Week Free Gen AI Course with select Programs.

Request a callback

or Chat with us on

Understanding Quick Sort in Data Structure

Basics of Python
Basics of Python
icon
5 Hrs. duration
icon
9 Modules
icon
1800+ Learners
logo
Start Learning

Quick Sort, a fascinating sorting algorithm in computer science, is like a magician’s trick. It’s a conquer-based sorting algorithm that arranges items in a systematic and efficient manner. Quicksort, the star of the show, is a widely used sorting algorithm that can make n log n comparisons in the average case of sorting an array of n elements. In this article, we’ll unravel the mystery of the Quick Sorting Algorithm step by step. Let’s embark on this intriguing journey. 

What is the Quick Sort Algorithm?

Quicksort is a popular and efficient sorting algorithm. It uses the divide-and-conquer approach to sort elements in an array or list.

How Does Quick Sort Work?

In this section, we will see “How does quick sort work”. Let’s discuss each step one by one.

 

  • Choose a Pivot: Select an element from the array to be the pivot. The choice of the pivot can vary. It could be the first element, the last element, a random element or the median.
  • Partition the Array: Rearrange the array so that elements less than the pivot are on the left-hand side and elements greater than the pivot are on the right-hand side. After this step, the pivot is in its final sorted position.
  • Recursively Apply Quicksort:  This process applies the same process to the sub-arrays of elements with smaller values and the sub-arrays of elements with larger values.

How to Implement the Quick Sort Algorithm?

In this section, we will implement the Quick Sort Algorithm in different languages: C++, Java, and Python

 

Implementation in C++ language

 

Program

#include <bits/stdc++.h> using namespace std;  int partition(int arr[],int low,int high) { //choose the pivot  int pivot=arr[high]; //Index of smaller element and Indicate //the right position of pivot found so far int i=(low-1);  for(int j=low;j<=high-1;j++) { //If current element is smaller than the pivot if(arr[j]<pivot) { //Increment index of smaller element i++; swap(arr[i],arr[j]); } } swap(arr[i+1],arr[high]); return (i+1); }  // The Quicksort function Implement  void quickSort(int arr[],int low,int high) { // when low is less than high if(low<high) { // pi is the partition return index of pivot  int pi=partition(arr,low,high);  quickSort(arr,low,pi-1); quickSort(arr,pi+1,high); } }  int main() { int arr[]={33,43,5, 343,998}; int n=sizeof(arr)/sizeof(arr[0]); // Function call quickSort(arr,0,n-1); //Print the sorted array cout<<"Sorted Arrayn"; for(int i=0;i<n;i++) { cout<<arr[i]<<" "; } return 0; }

Output

Sorted Array 5 33 43 343 998

 

Implementation in Java language

 

Program

class QuickSort {  static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }  static int partition(int[] arr, int low, int high) { // Choosing the pivot int pivot = arr[high];  int i = (low - 1);  for (int j = low; j <= high - 1; j++) {  if (arr[j] < pivot) {  i++; swap(arr, i, j); } } swap(arr, i + 1, high); return (i + 1); }  static void quickSort(int[] arr, int low, int high) { if (low < high) {  int pi = partition(arr, low, high);  quickSort(arr, low, pi - 1); quickSort(arr, pi + 1, high); } } public static void printArr(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } }  public static void main(String[] args) { int arr[]={33,43,5, 343,998}; int N = arr.length;  // Function call quickSort(arr, 0, N - 1); System.out.println("Sorted array:"); printArr(arr); } }

Output

Sorted array: 5 33 43 343 998

Implementation of Python Quick Sort

 

Program

def partition(array, low, high): pivot = array[high] i = low - 1 for j in range(low, high): if array[j] <= pivot: i = i + 1 (array[i], array[j]) = (array[j], array[i])  (array[i + 1], array[high]) = (array[high], array[i + 1]) return i + 1  def quicksort(array, low, high): if low < high: pi = partition(array, low, high) quicksort(array, low, pi - 1) quicksort(array, pi + 1, high)  # Driver code if __name__ == '__main__': array = [33,43,5,343,998]; N = len(array)  # Function call quicksort(array, 0, N - 1) print('Sorted array:') for x in array: print(x, end=" ")

Output

Sorted array: 5 33 43 343 998
DevOps & Cloud Engineering
Internship Assurance
DevOps & Cloud Engineering

Quicksort Complexity

Quicksort is a very popular sorting algorithm. It is a very useful choice for sorting large datasets and is used in various fields of computer science. Understanding its complexity and having code implemented in multiple programming languages can be valuable for students and professionals, allowing them to leverage Quicksort’s efficiency in their applications.

 

  • Time Complexity of Quick Sorts

                     

                   Average Case : 0(n*log(n))

                   Worst Case: 0(n^2) 

                   Best Case: 0(n* log(n))

                

 

  • Space Complexity: A quick sort has O(1) auxiliary space and stack space. If we consider the recursive stack space, then it is the worst-case quick sort that could make O(N).

Quicksort Application

In this section, we will discuss the applications of the Quick Sort algorithm. Although the algorithm has many applications, we will discuss some common Ones.

 

  • Database Query Processing: In the database, quick sorting is often used for sorting records. It is very efficient and crucial for operations like margin sorting of two datasets, optimizing search queries, and performing range queries.
  • File Systems:  Quick sort is also used to manage files and directories efficiently. Sorting helps in faster retrieval and better organization of files.
  • Memory Management: Quick sort also can be used in memory management systems to organize and allocate the memory blocks. It is also used for sorting, which helps in quicker access and better management of memory.

 

What are the Advantages of Quick Sort?

In this section, we will discuss the advantages of Quick Sort. Let’s discuss the quick sort algorithm advantages.

 

  • Efficiency: The fast average case performance of 0(n log n).
  • Cache Friendliness: The quick Sort algorithm is good for cache performance due to the locality of reference.
  • Simplicity: This algorithm is very simple to implement and understand.
  • Versatility: Quick Sort algorithm is a very adaptable data structure and customizable pivot selection.

What are the Disadvantages of Quick Sort?

  • Quick Sort has a worst-case time complexity of 0(N2), which occurs when the pivot is chosen poorly.
  • It is not good for small data sets
  • Quick sort is not a stable sort algorithm. It means equal elements may not retain their origin order.
  • Quick Sort is poorly performed on linked lists compared to arrays due to its need for random access.
  • Performance can be significantly affected by the choice of pivot, requiring careful selection strategies.

Conclusion

In this article, we learned about the Quick Sort algorithm. It is a highly efficient and widely used sorting algorithm that excels in average case performance with a time complexity of O(log n). It operates using a divide-and-conquer strategy, partitioning the array around a pivot element and recursively sorting the subarrays. We also saw the advantages and disadvantages of the Quick Sort algorithm.

FAQs
The quick sort algorithm uses divide and conquer to sort the list or array. However, it is a much faster algorithm, twice or three times faster than any other sorting method.
A pivot element is chosen in the array. The partitioning process will rearrange the array so that elements less than the pivot are on one side and elements greater than the pivot are on the other side.
Quick Sort is not stable by default because it does not necessarily preserve the relative order of equal elements.  Developers must be careful when they are implementing quick-sort algorithms.
Bubble Sort is considered the simplest sorting algorithm. It goes through an entire array and compares each element one by one. It then swaps the number and keeps doing this until the list is in ascending or descending order.
Developers can use Quick Sort, where a stable sort is not needed. Quick sort is a very cache-friendly algorithm as it has a good locality of reference when used for arrays.

Deploying Applications Over the Cloud Using Jenkins

Prashant Kumar Dey

Prashant Kumar Dey

Associate Program Director - Hero Vired

Ex BMW | Google

19 October, 12:00 PM (IST)

Limited Seats Left

Book a Free Live Class

left dot patternright dot pattern

Programs tailored for your success

Popular

Management

Data Science

Finance

Technology

Future Tech

Upskill with expert articles

View all
Hero Vired logo
Hero Vired is a leading LearnTech company dedicated to offering cutting-edge programs in collaboration with top-tier global institutions. As part of the esteemed Hero Group, we are committed to revolutionizing the skill development landscape in India. Our programs, delivered by industry experts, are designed to empower professionals and students with the skills they need to thrive in today’s competitive job market.

Data Science

Accelerator Program in Business Analytics & Data Science

Integrated Program in Data Science, AI and ML

Accelerator Program in AI and Machine Learning

Advanced Certification Program in Data Science & Analytics

Technology

Certificate Program in Full Stack Development with Specialization for Web and Mobile

Certificate Program in DevOps and Cloud Engineering

Certificate Program in Application Development

Certificate Program in Cybersecurity Essentials & Risk Assessment

Finance

Integrated Program in Finance and Financial Technologies

Certificate Program in Financial Analysis, Valuation and Risk Management

Management

Certificate Program in Strategic Management and Business Essentials

Executive Program in Product Management

Certificate Program in Product Management

Certificate Program in Technology-enabled Sales

Future Tech

Certificate Program in Gaming & Esports

Certificate Program in Extended Reality (VR+AR)

Professional Diploma in UX Design

Blogs
Reviews
Events
In the News
About Us
Contact us
Learning Hub
18003093939     ·     hello@herovired.com     ·    Whatsapp
Privacy policy and Terms of use

© 2024 Hero Vired. All rights reserved