请问这个程序完成了什么功能c/c++

来源:百度知道 编辑:UC知道 时间:2024/06/16 03:43:45
void work(int p, int r)
{
if (p < r) {
int i = p - 1, j, temp;
for (j = p; j < r; j++) {
if (a[j] >= a[r]) {
i++;
temp = a[i]; a[i] = a[j]; a[j] = temp;
}
}
temp = a[i + 1]; a[i + 1] = a[r]; a[r] = temp;
work(p, i);
work(i + 2, r);
}
}

你这只是个递归函数,并不完整,比如说,那个数组a[]就没有定义。

假设是个已经定义的数组。这个是一个算法,就是随便设置两个位置(p,r)用来标识数组元素位置,进行交换,(是数据结构中快速排序的算法).

其实这个函数应该有三个参数,那个数组也要带上)

【快速排序算法实现】
快速排序的实现基于分治法,具体分为三个步骤。假设待排序的序列为L[m..n]。
分解:序列L[m .. n]被划分成两个可能为空的子序列L[m .. pivot-1]和L[pivot+1 .. n],使L[m .. pivot-1]的每个元素均小于或等于L[pivot],同时L[pivot+1.. n]的每个元素均大于L[pivot]。其中L[pivot]称为这一趟分割中的主元(也称为枢轴、支点)。
解决:通过递归调用快速排序,对子序列L[m .. pivot-1]和L[pivot+1 .. r]排序。
合并:由于两个子序列是就地排序的,所以对它们的合并不需要操作,整个序列L[m .. n]已排好序。

这个函数有语法错误, 里面的数组a没有声明