相关代码
class Sort4 {
public void quickSort(int number[]) {
if (number.length <= 1 || number == null)
return;
else {
inter(number,0,number.length-1);
}
}
public void inter(int number[],int left,int right){
if(left<=right){
return;
}
int partitiona=partition1(number,left,right);
partition1(number,left,partitiona-1);
partition1(number,partitiona+1,right);
int partitionb=partition1(number,left,right);
partition1(number,left,partitionb-1);
partition1(number,partitionb+1,right);
int partitionc=partition1(number,left,right);
partition1(number,left,partitionc-1);
partition1(number,partitionc+1,right);
}
public int partition1(int number[],int left,int right){
int x=number[left];
while (left <right) {
while (x <= number[right] && left < right) {
right--;
}
number[left] = number[right];
while (number[left] >= x && left < right) {
left++;
}
number[right] = number[left];
}
number[right]=x;
return left;
}
public int partition2(int number[],int left,int right) {
int b=left;
int begin=left+1;
int end=right;
while (begin<end){
while(number[end]>=b&&left<right)
{
end--;
}
while(number[begin]>=b&&left<right)
{
begin++;
}
while(number[begin]<number[end]&&left<right) {
int x=number[end];
number[end]=number[begin];
number[begin]=x;
}
}
if(b>number[begin])
{
number[left]=number[begin];
number[begin]=b;
}
return begin;
}
public int partition3(int number[],int left,int right) {
int b=number[left];;
int begin=left+1;
int end=right;
for(int i=left+1;i<=end;i++){
if(number[i]<b){
int c= number[i];
number[i]=number[begin];
number[begin]=c;
begin++;
}
}
if(number[begin-1]<b)
{
number[left]=number[begin-1];
number[begin-1]=b;
}
return begin-1;
}
}