typedef size_t Index; //typedef int Index;
// 对arr[l...r]部分进行partition操作
// 返回p,使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p]
Index __partition(int arr[], Index l, Index r){
int v = arr[l];
Index j = l; // arr[l+1...j] < v ; arr[j+1...i) > v
for(Index i = l + 1 ; i <= r ; i ++)
{
if( arr[i] < v )
{
j ++;
swap( arr[j] , arr[i] );
}
}
swap( arr[l] , arr[j]);
return j;
}
// 对arr[l...r]部分进行快速排序
void __quickSort(int arr[], Index l, Index r){
if( l < r )
{
Index p = __partition(arr, l, r);
__quickSort(arr, l, p-1 );
__quickSort(arr, p+1, r);
}
}
void quickSort(int arr[], Index n){
__quickSort(arr, 0, n-1);
}
int main()
{
int a[] = {6, 3, 4, 5, 8, 7, 10, 6, 3, 4, 5, 0, 8, 7};
Index n = sizeof(a)/sizeof(a[0]);
quickSort(a, n);
return 0;
}当数组索引相关的变量为int时,代码正确运行,当我把数组索引相关的变量为size_t类型时,运行出错,如下图
运行平台:win7 64bit,VS2008
实在看不出哪里出了错。求解答
