一个快速排序纠结的问题
我试了下这个对字符快速排序的程序,N定义较小的时候没有问题,但很大的话运行时会报错(用c语言内置函数qsort()却没有问题),请问谁能解释下why?#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#define N 50000
void quickSort(char* arr,int startPos, int endPos)
{
int i,j;
char ch;
ch=arr[startPos];
i=startPos;
j=endPos;
while(i<j)
{
while(arr[j]>=ch && i<j)--j;
arr[i]=arr[j];
while(arr[i]<=ch && i<j)++i;
arr[j]=arr[i];
}
arr[i]=ch;
if(i-1>startPos) quickSort(arr,startPos,i-1);
if(endPos>i+1) quickSort(arr,i+1,endPos);
}
void main()
{
char ch[N];
int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < N;)
{
if((ch[i]=rand()%123)>96)
{
printf( "%c", ch[i]);i++;
}
}
printf("\n****************************\n");
quickSort(ch,0,N-1);
for( i = 0; i < N; i++ )
{
printf( "%c", ch[i]);
}
}