直接贴代码了
#include
#include
#include
#include
#define MAXRANDOM 1000 //产生最大随机数
#define LINESHOWNUM 8 //每行显示的数目
void swap(int* pA, int *pB)
{
if(NULL == pA || NULL == pB)
{
return ;
}
int iTmp = *pA;
*pA = *pB;
*pB = iTmp;
}
void printArray(int* pArray, int num)
{
if(NULL != pArray)
{
int i = 0;
for( ; i < num; )
{
printf("%d ", pArray[i++]);
if(i%LINESHOWNUM == 0)
{
putchar('\n');
}
}
printf("\n");
}
}
void myqsort(int* pArray, int nStart, int nEnd)
{
if(NULL == pArray || nStart < 0 || nStart >= nEnd)
{
return ;
}
int i = nStart + 1;
int j = nEnd;
while(i != j)
{
while(pArray[j] >= pArray[nStart] && j > i)
{
j--;
}
while(pArray[i] <= pArray[nStart] && j > i)
{
i++;
}
if(i < j)
{
swap(pArray + i, pArray + j);
}
}
if(pArray[nStart] > pArray[i])
{
swap(pArray + nStart, pArray + i);
}
myqsort(pArray, nStart, i - 1);
myqsort(pArray, i, nEnd);
}
int main(int argc, const char *argv[])
{
if(argc < 2)
{
fprintf(stderr, "Usage: %s num", argv[0]);
return -1;
}
int num = atoi(argv[1]);
if(num < 1)
{
fprintf(stderr, "Num Must greater than 1");
return -1;
}
int* pArray = (int*)malloc(num*sizeof(int));
if(NULL == pArray)
{
fprintf(stderr," Creat array error!");
return -1;
}
srand(time(0));
int i = 0;
for( ; i < num; ++i)
{
pArray[i] = rand()%MAXRANDOM;
}
printf("排序前:\n");
printArray(pArray, num);
myqsort(pArray, 0, num - 1);
printf("排序后:\n");
printArray(pArray, num);
free(pArray);
return 0;
}