public int Partition(int first, int last)
{
int pivotVal = arr[first];
int theFirst = first;
while (first <= last)
{
while (arr[first] <= pivotVal)
first++;
while (arr[last] >= pivotVal)
last--;
if (first < last)
{
Swap(first, last);
this.DisplayElements();
first++;
last--;
}
Swap(theFirst, last);
this.DisplayElements();
return last;
}
}
感觉这个程序问题有点多。
第一,我们不看代码本身,整体来看,return应该写在倒数第二个花括号外面,否则最外层的while循环只能走一次;
其次,看不到你写Swap函数,但是就参数而言,用的不是指针,不是引用,排序之后应该不会被回传;
最后,把上面的两个问题先解决,我试了一下,如果if(first<last)里面的循环是交换数组的值的话,程序就死在这儿,后面没发走了。
请再好好想想。希望对你有帮助。