我为一个作业实现了快速排序,我已经完成了,但是排序后的数组只有一个地方是错误的。这是输出。
Array before QuickSort: 5 99 32 4 1 12 15 8 13 55
Array after QuickSort: 1 5 4 8 12 13 15 32 55 99
它为除 5 和 4 之外的所有内容正确排序数组。我用调试器玩了几个小时,无法弄清楚为什么会这样,有人可以帮忙吗?Iv 在下面发布了我的快速排序代码。
int main()
{
int quickArray[SIZE] = { 5 ,99, 32, 4, 1, 12, 15 , 8, 13, 55};
int arrStartIndex = 0;
int arrEndIndex =9;
//Code to print array at start
QuickSort(quickArray,arrStartIndex,arrEndIndex);
//Code to print array after sort
return 0
}
..................................................... ……………………………………………………………………………………………………………………………………
void QuickSort(int ar2[],int startIndex, int endIndex)
{
//Begin QuickSort
int Q;
if( startIndex < endIndex )
{
Q = Partition(ar2,startIndex,endIndex);
QuickSort(ar2,startIndex,Q-1);
QuickSort(ar2,Q+1,endIndex);
}
//End QuickSort
}
..................................................... ..................................................
int Partition(int ar2[],int P, int R)
{
int x = ar2[R];
int i = P-1;
int temp;
for(int j = P; j <= R-1; j++)
{
if( ar2[j] < x )
{
i = i +1;
temp = ar2[i];
ar2[i] = ar2[j];
ar2[j] = temp;
}
temp = ar2[R];
ar2[R] = ar2[i+1];
ar2[i+1] = temp;
}
return (i+1);
}