0% found this document useful (0 votes)
8 views2 pages

Quick Sort

This document defines functions for quicksort and its helper functions. It includes a partition function that selects a pivot element and rearranges the array such that all elements less than the pivot come before all elements greater than the pivot. It also includes a quicksort function that recursively calls partition and sorts halves of the array. The main function tests it on a sample array and prints the unsorted and sorted arrays.

Uploaded by

Ahmed Alam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views2 pages

Quick Sort

This document defines functions for quicksort and its helper functions. It includes a partition function that selects a pivot element and rearranges the array such that all elements less than the pivot come before all elements greater than the pivot. It also includes a quicksort function that recursively calls partition and sorts halves of the array. The main function tests it on a sample array and prints the unsorted and sorted arrays.

Uploaded by

Ahmed Alam
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

#include <iostream>

using namespace std;


// function to swap elements
void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
// function to print the array
void printArray(int array[], int size) {
int i;
for (i = 0; i < size; i++)
cout << array[i] << " ";
cout << endl;
}
// function to rearrange array (find the partition point)
int partition(int array[], int low, int high) {
// select the rightmost element as pivot
int pivot = array[high];
// pointer for greater element
int i = (low - 1);
// traverse each element of the rray
// compare them with the pivot
for (int j = low; j < high; j++) {
if (array[j] <= pivot) {
i++;
// if element smaller than pivot is found
// swap it with the greater element pointed by i
// swap element at i with element at j
swap(&array[i], &array[j]);
}
}
// swap pivot with the greater element at i
swap(&array[i + 1], &array[high]);
// return the partition point
return (i + 1);
}
void quickSort(int array[], int low, int high) {
if (low < high) {
// find the pivot element such that
// elements smaller than
// elements greater than
int pi = partition(array, low, high);

// recursive call on the


quickSort(array, low, pi - 1);
// recursive call on the
quickSort(array, pi + 1, high);
}
}
// Driver code
int main() {
int data[] = {8, 7, 6, 1, 0, 9, 2};
int n = sizeof(data) / sizeof(data[0]);
cout << "Unsorted array : \n";
printArray(data, n);
// perform quicksort on data
quickSort(data, 0, n - 1);
cout << "Sorted array in ascending order: \n";
printArray(data, n);
}

You might also like