oracle 自定义类型,写了两个extend才能执行,否则下标超数量,请问为什么...
发布网友
发布时间:2024-03-09 09:20
我来回答
共1个回答
热心网友
时间:2024-03-19 04:42
修改两个地方:
①数组下标超了:
QuickSort(A, 0, size);
printarray(A, size);
改为:
QuickSort(A, 0, size-1);
printarray(A, size-1);
②条件判断有点问题:
int Partition(int array[], int left, int right)
{
int centre =array[left];
int i = left+1;
int j = right;
while (1)
{
while (array[i] < centre && i <= right)
i += 1;
while(array[j] > centre && j <= left)
j -= 1;
if (i >= j)
break;
else
myswap(array[i], array[j]);
}
myswap(array[left], array[j]);
return j;
}
改为:
int Partition(int array[], int left, int right)
{
int centre =array[left];
int i = left;
int j = right;
while (i != j)
{
while(array[j] >= centre && j > i)
j -= 1;
while (array[i] <= centre && i < j)
i += 1;
if (i < j) myswap(array[i], array[j]);
}
myswap(array[left], array[i]);
return j;
}