0% found this document useful (0 votes)
8 views

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
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

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
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