Quick Sort : Sort « Development « C++ Tutorial






#include <iostream>
using namespace std;

int *swapnumbers(int rawdata[], int lower, int upper);
int *quicksort(int rawdata[], int first, int last);

int main()
{
    int unsorted[10],i;
    int *sorted;

    unsorted[0] = 9;
    unsorted[1] = 8;
    unsorted[2] = 7;
    unsorted[3] = 7;
    unsorted[4] = 6;
    unsorted[5] = 5;
    unsorted[6] = 5;
    unsorted[7] = 4;
    unsorted[8] = 4;
    unsorted[9] = 2;

    sorted = quicksort(unsorted, 0, 10);

    cout << "This is your array sorted:"<< endl;
    for(i = 0; i < 10; i++)
    {
        cout << sorted[i] << endl;
    }

    return 0;
}

int *quicksort(int rawdata[], int first, int last)
{
    int lower = first+1, upper = last;
    int bound;

    rawdata = swapnumbers(rawdata, first, (first+last)/2);
    bound = rawdata[first];

    while(lower <= upper)
    {
        while(rawdata[lower] < bound)
            lower++;

        while(bound < rawdata[upper])
            upper--;

        if(lower < upper)
        {
            rawdata = swapnumbers(rawdata, lower++, upper--);
        }
        else
        {
            lower++;
        }
    }

    rawdata = swapnumbers(rawdata, upper, first);

    if(first < upper-1)
    {
        rawdata = quicksort(rawdata, first, upper-1);
    }
    if(upper+1 < last)
    {
        rawdata = quicksort(rawdata, upper+1, last);
    }
    return(rawdata);
}


int *swapnumbers(int rawdata[], int lower, int upper)
{
    int temp;
    temp = rawdata[lower];
    rawdata[lower] = rawdata[upper];
    rawdata[upper] = temp;
    return(rawdata);
}
This is your array sorted:
0
2
4
4
5
5
6
7
7
8








5.22.Sort
5.22.1.A Bubble sort
5.22.2.A recursive version of Quicksort for sorting characters
5.22.3.Quick Sort
5.22.4.how to declare your own function and function pointer to be used with qsort( )
5.22.5.Sort Tracer
5.22.6.Selection Sort