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.
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 ratings0% 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.
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); }