//快速排序
int PARTITION(int array[],int p,int r)
{
int x = array[r];
int i = p - 1;
for(int j = p; j <= r - 1; ++j)
{
if (array[j] <= x)
{
++i;
swap(array[i],array[j]);
}
}
swap(array[i + 1],array[r]);
return i + 1;
}
void QuickSort(int array[],int p,int r)
{
if(p < r)
{
int q = PARTITION(array,p,r);
QuickSort(array,p,q -1);
QuickSort(array,q + 1,r);
}
}
int PARTITION(int array[],int p,int r)
{
int x = array[r];
int i = p - 1;
for(int j = p; j <= r - 1; ++j)
{
if (array[j] <= x)
{
++i;
swap(array[i],array[j]);
}
}
swap(array[i + 1],array[r]);
return i + 1;
}
void QuickSort(int array[],int p,int r)
{
if(p < r)
{
int q = PARTITION(array,p,r);
QuickSort(array,p,q -1);
QuickSort(array,q + 1,r);
}
}
//Stooge排序
void Stooge_Sort(int array[],int i,int j)
{
if (array[i] > array[j])
swap(array[i],array[j]);
if(i + 1 >= j) return;
int k = (j -i + 1)/3;
Stooge_Sort(array,i,j-k);
Stooge_Sort(array,i + k,j);
Stooge_Sort(array,i,j-k);
}