在学习如何编写快速排序时,我遇到了一个对我来说非常不清楚的实现。这是它的开始:
void quick_sort_iterative(int start, int end)
{
range stack[32]; // 1. why 32? why not 2? why not 1024? what is it?
range * s = stack; // 2. just a simple pointer = an array?
s->start = start; // 3. are these two values currently on top of the stack?
s->end = end;
s++; // 4. how does it work? it's pushing something on the stack?
// sort as long as there are any ranges [start, end] to sort left
while (s > stack) // 5. comparing a pointer and an array and it works?
有人可以解释一下这五件事吗? :)谢谢。
这是整个代码(页面上的最后一个代码,带有描述): code
答案 0 :(得分:0)
因此。据推测,range
是一个具有两个整数参数start
和end
的对象。我说的不多。
&stack[0]
。s->start
目前与s[0].start
相同。s
现在指向&stack[1]
。s
未指向&stack[0]
。答案 1 :(得分:0)
s
,并且当它再次到达堆栈顶部时它们想要停止。