我怀疑分区功能有问题。
void swap(int num1, int num2) { /*function to swap the values */
int temp = intArray[num1];
intArray[num1] = intArray[num2];
intArray[num2] = temp;
}
int partition(int left, int right) { //partition function
int leftPointer = left;
int j;
int pivot=intArray[right];
for(j=0;j<right;j++){
if(intArray[j]<=pivot){
swap(j,leftPointer);
leftPointer++;
}
}
swap(leftPointer,right);
return leftPointer;
}
void quickSort(int left, int right) { //quicksort
if(left<right){
int partitionPoint = partition(left, right);
quickSort(left,partitionPoint-1);
quickSort(partitionPoint+1,right);
}
}
该程序运行正常,但它没有排序!
答案 0 :(得分:2)
您的分区算法始终从元素零开始。它应该从分区的开始处开始。