int split (int* a, int begin, int end)
{
int temp;
while (1)
{
while (begin < end && *(a + begin) <= *(a + end))
end--;
if (begin >= end)
return begin;
else
{
temp = *(a + begin);
*(a + begin) = *(a + end);
*(a + end) = temp;
begin++;
}
while (begin < end && *(a + begin) < *(a + end))
begin++;
if (begin >= end)
return end;
else
{
temp = *(a + begin);
*(a + begin) = *(a + end);
*(a + end) = temp;
end--;
}
}
}
void Qsort (int* a, int begin, int end)
{
if (begin < end)
{
int mid = split (a, begin, end);
Qsort (a, begin, mid - 1);
Qsort (a, mid + 1, end);
}
}
快速排序好啊,归并虽然也不错,但是还要申请空间做临时空间
归并排序时先分解到一定的程度然后再进行排序
1,分解 2,解决 3,合并
快速的话时先排,在解决,在回归的时候其实什么都没做,因为在那个时候begin = end