标签:ret quick 大小 get 溢出 http 函数 范围 windows
http://blog.csdn.net/morewindows/article/details/6684558#
默写:(错误用黄色标出)
int partition(int s[], int left, int right)
{
int i = left;
int j = right;
int x = s[0];--------应该为s[left]----不一定是非从零开始啊。
while (i < j)---------------因为i=j的时候就是结束这个小过程的时候。所以在i=j的那一刻停止就可以了
{
while (i <= j&&s[j] < x)-----------while(i<j&&s[j]>=x)【两个while中需要有一个=x的】
j--;
s[i] = s[j];-----------------------if(i<j)------因为出while的时候可能i=j了,这里保证在不等的时候填坑,并移动
{s[i]=s[j];
i++;}
while (i <= j&&s[i] > x)-----------同理,s[i]<x;
i++;
s[j] = s[i];
}
s[i] = x;
return x;--------------------------返回的是坑,而不是坑里的东西 return i
}
void quick_sort(int s[], int left,int right)
{
if (s == NULL||left>=right)------这里关于空的检查。。。很奇怪----这是个问题待解决
return;
int g = partition(s, left, right);
quick_sort(s, left, g - 1);--------------------递归
quick_sort(s, left + 1, right);
}
整合成一个函数的时候
注意:
①将返回值设为void
②在最开始检查left和right的大小----如果不检查会造成堆栈溢出----原因是最后递归是要g-1和g+1的,如果不检查会超出范围。
标签:ret quick 大小 get 溢出 http 函数 范围 windows
原文地址:http://www.cnblogs.com/Cherrylalala/p/6475849.html