写法一
int mypartition(vector<int>&arr, int low, int high)
{
int pivot = arr[low];
while(low < high)
{
while(low < high && arr[high] >= pivot)high--;
arr[low] = arr[high];
while(low < high && arr[low] <= pivot)low++;
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
方法二
int partition_algorithm(int A[],int begin,int end){
int pivot = A[end];
int i = begin;
for(int j=begin;j<end;++j){
if(A[j] <= pivot){
swap(A[j],A[i]);
i++;
}
}
swap(A[i],A[end]);
return i;
}
方法三
public static int partition(int[] array,int lo,int hi) {
int key=array[lo];
int i=lo;
int j=hi;
while(i<j) {
while(array[j]>=key&&i<j) j--;
while(array[i]<=key&&i<j) i++;
swap(array,i,j);
}
swap(array,lo,j);
return j;
}