1. 快速排序:
void QuickSort(int * p, int begin, int end)
{
/* 参数合法性检查 */
if (NULL == p || begin < 0 || end < 0 || begin >= end)
{
return;
}
/* 快速排序 */
int i, j, tmp;
i = begin;
j = end + 1;
while (true)
{
do
{
i++;
} while (p[i] < p[begin] && i < j);
do
{
j--;
} while (p[j] > p[begin]);
if (i < j)
{
tmp = p[j];
p[j] = p[i];
p[i] = tmp;
}
else
{
break;
}
}
/* 交换 */
tmp = p[j];
p[j] = p[begin];
p[begin] = tmp;
/* 递归调用 */
QuickSort(p, begin, j - 1);
QuickSort(p, j + 1, end);
}