void qsort(int v[], int left, int right)
{
int j, last;
if (left >= right) /* 若数组包含的元素个数少于两个 */
return; /* 则不执行任何操作 */
swap(v, left, (left + right)/2); /* 将划分子集的元素移动到V[0] */
last=left; /* 用last记录中比关键字小间的最右位置*/
for (j = left+1; j <= right; j++) /* 划分子集 */
{
if (v[j] < v[left])
{
swap(v, ++last, j);
}
}
/*通过上述过程会形成 关键字(中left所在位置) 小小小...(last所在位置)大大大大(最后)*/
swap(v, left, last); /* 恢复划分的元素 */
/*小小。。。。关键字大大大大*/
qsort(v, left, last-1);
qsort(v, last+1, right);
}
/**************************************************************************/
两个for循环,
一个用来控制比较的趟数,一个用来每趟比较的次数
连个指针i,j,
一个指向数组的头,一个指向数组的尾。
采用的是分治法的思想