最坏时间复杂度O(n^2),最佳时间复杂度O(nlog2n),空间复杂度O(log2n)~O(n),不稳定
package suanfa;
public class kuaisu {
public void kuaisu(int a[],int left,int right){
if(left>right){
return;
}
int temp;
int i=left;
int j=right;
temp=a[left];
while(i!=j){//比较时一定要加上=号,否则结果会出现偏差
while((i<j)&&(a[j]>=temp)) j--;//当右边的数都大于基准数,j向左移动;否则退出循环
while((i<j)&&(a[i]<=temp)) i++;//当左边的数都小于基准数,i向右移动;否则退出循环
if(i<j){//退出循环后判断i是否小于j,则互换位置;
int cap;
cap=a[j];
a[j]=a[i];
a[i]=cap;
}
}//当i=j时跳出循环;交换基位位置;
int cap;
cap=a[i];
a[left]=cap;
a[i]=temp;
//进行下一次迭代;
kuaisu(a,left,i-1);//左边迭代;
kuaisu(a,j+1,right);//右边迭代;
}
}