int partition(int a[],int l,int r){
int pivot=a[l], i=l, j=r;
while(i<j){
while(i<j && a[j]>=pivot) j--;
a[i]=a[j];
while(i<j && a[i]<=pivot) i++;
a[j]=a[i];
}
a[i]=pivot;
return i;
}
- 基准 pivot 选取的是哪个元素?答案:区间首元素 a[l]解析:以 a[l] 作为基准值。
- 函数返回值表示什么含义?答案:基准最终归位的下标(分界点)解析:返回 pivot 的最终位置,左侧均 ≤ 它、右侧均 ≥ 它。
- 若原数组已升序,快速排序整体最坏时间复杂度是多少?答案:O(n^2)解析:每次只把区间减少 1,递归深度退化为 O(n)。