swap换过来在换回去 没看懂 这里为啥要返回j呢
来源:3-5 快速排序法 - Quick Sort

慕虎7937911
2020-05-27
int __partition(T arr[], int l, int r){
T v = arr[l];
int j = l; // arr[l+1...j] < v ; arr[j+1...i) > v
for( int i = l + 1 ; i <= r ; i ++ )
if( arr[i] < v ){
j ++;
swap( arr[j] , arr[i] );
}
swap( arr[l] , arr[j]);
return j;
}
写回答
1回答
-
liuyubobobo
2020-05-27
因为循环后,j 指向了标定点的位置。在 j 之前,所有的元素都小于 arr[j];在 j 之后,所有的元素都大于 arr[j]。
实际使用一个测试用例试试看,这个算法运行完成以后,j 指向的是谁?为什么要返回 j?
或者反向的,你根据自己的想法或者逻辑,认为应该返回谁?然后实际使用一个小测试用例验证一下,看看返回的对不对?
继续加油!:)
00
相似问题