source:
123
abcd
456
abcdf
abc
789
A
1
结果:
1
123
456
789
A
abc
abcd
abcdf-------------------
define ONE_SIZE = 20我是这样做的:
void quick_sort(unsigned char* x, int low, int high)
{
int i=low, j=high;
unsigned char t[20];
memcpy(t,&x[low*ONE_SIZE],ONE_SIZE);while (i<j)
{
' while (i<j && str_cmp(true,&x[j*ONE_SIZE],t,ONE_SIZE))
' j--;' memcpy(x+i*ONE_SIZE,x+j*ONE_SIZE,ONE_SIZE);
' while (i<j && str_cmp(false,&x[i*ONE_SIZE],t,ONE_SIZE))
' i++;
' memcpy(x+j*ONE_SIZE,x+i*ONE_SIZE,ONE_SIZE);' memcpy(x+i*ONE_SIZE,t,ONE_SIZE);
' quick_sort(x,low,i-1); //递归调用此函数
' quick_sort(x,i+1,high);
}我把所有数据放到x里面, 然后定长取出来再比较,
quick_sort(x,0,count);
个数少的时候还行,多了就挂了!
123
abcd
456
abcdf
abc
789
A
1
结果:
1
123
456
789
A
abc
abcd
abcdf-------------------
define ONE_SIZE = 20我是这样做的:
void quick_sort(unsigned char* x, int low, int high)
{
int i=low, j=high;
unsigned char t[20];
memcpy(t,&x[low*ONE_SIZE],ONE_SIZE);while (i<j)
{
' while (i<j && str_cmp(true,&x[j*ONE_SIZE],t,ONE_SIZE))
' j--;' memcpy(x+i*ONE_SIZE,x+j*ONE_SIZE,ONE_SIZE);
' while (i<j && str_cmp(false,&x[i*ONE_SIZE],t,ONE_SIZE))
' i++;
' memcpy(x+j*ONE_SIZE,x+i*ONE_SIZE,ONE_SIZE);' memcpy(x+i*ONE_SIZE,t,ONE_SIZE);
' quick_sort(x,low,i-1); //递归调用此函数
' quick_sort(x,i+1,high);
}我把所有数据放到x里面, 然后定长取出来再比较,
quick_sort(x,0,count);
个数少的时候还行,多了就挂了!
递归调用层数太多的时候容易栈溢出.
把栈开大的.或者是不使用递归.