这个快速排序计划有什么不对吗?

时间:2016-12-14 14:27:10

标签: c sorting quicksort

我怀疑分区功能有问题。

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);
   }
}

该程序运行正常,但它没有排序!

1 个答案:

答案 0 :(得分:2)

您的分区算法始终从元素零开始。它应该从分区的开始处开始。