#include "stdafx.h"
#include <iostream>
#define DATA_SIZE 14
void swap(int data[], int i, int j)
{
int iTemp = data[i];
data[i] = data[j];
data[j] = iTemp;
}
int partition(int data[], int iLow, int iHigh)
{
int iPoint = data[iLow];
while ( iLow < iHigh )
{
while ( iLow < iHigh && data[iHigh] >= iPoint )
{
iHigh--;
}
swap(data, iLow, iHigh);
while ( iLow < iHigh && data[iLow] <= iPoint )
{
iLow++;
}
swap(data, iLow, iHigh);
}
return iLow;
}
void qSort(int data[], int iLow, int iHigh)
{
int iPoint = 0;
if ( iLow < iHigh )
{
iPoint = partition(data, iLow, iHigh);
qSort(data, iLow, iPoint - 1);
qSort(data, iPoint + 1, iHigh);
}
}
void printResult(int data[], int iDataSize)
{
printf("排序后的结果是:");
for ( int i = 0; i < iDataSize; i++)
{
printf("%d ", data[i]);
}
printf("\n\n");
}
void quickSort()
{
int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18};
qSort(data, 0, DATA_SIZE - 1);
printResult(data, DATA_SIZE);
}
int _tmain(int argc, _TCHAR* argv[])
{
quickSort();
getchar();
return 0;
}