这个快速排序程序有什么问题?
Whats wrong in this quicksort program?
怀疑分区函数有问题
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);
}
}
程序运行良好,但无法排序!
您的分区算法总是从元素零开始。它应该从分区的开头开始。
怀疑分区函数有问题
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);
}
}
程序运行良好,但无法排序!
您的分区算法总是从元素零开始。它应该从分区的开头开始。