您的位置:首页 > 编程语言 > Go语言

Algorithm--快速排序

2015-03-28 17:49 197 查看
#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;
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: