void qkSort (int *arr,int size)
{
if (size>1)
{
int p = partition(arr,size);
qkSort(arr,p);
qkSort(arr+p+1,size-(p-1));
}
return;
}
int partition(int *arr,int size)
{
int i,j,pivot,temp;
pivot = size-1;
for(i=0,j=-1;i<size-1;++i)
{
if (arr[i]<arr[pivot])
{
++j;
if(i!=j)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
temp = arr[pivot];
arr[pivot] = arr[j+1];
arr[j+1] = temp;
pivot = j+1;
return pivot;
}
プログラムがハングアップします。gdb で変数を監視すると、2 番目の再帰呼び出しで引数が正しく渡されないことがわかります。助けてください!前もって感謝します!