快速排序通用指针写法如下
void Quicksort(int*arr,int left,int right)
{
if(left>=right) return;
int first=left;
int last=right;
int target=left;
while(left<right)
{
while(arr[right]>=arr[target]&&right>left) right--;
while(arr[left]<=arr[target]&&left<right) left++;
swap(arr[right],arr[left]);
}
swap(arr[target],arr[right]);
Quicksort(arr,first,right-1);
Quicksort(arr,right+1,last);
};
需要注意的点
1.几个判断大小是否去等于 只有开始判断是否相等,和中途移动左右数字比较标记值时需要等于,其余不需要
2.重中之重,要先右后左的移动如果取标准值为最左,不然会出现边界条件问题!!!!