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.
Download as TXT, PDF, TXT or read online on Scribd
0 ratings0% 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.
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); }