快速排序的思想不知道怎么描述,那么就直接贴代码吧。做个笔记。
public class Quicksort {
public static void main(String[] arg){
int[] a={45,3,89,41,34,99,3,55,9,36};
sort(a,0,a.length-1);
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
}
static void sort(int[] a,int left,int right){
if(left>=right)return;
if(left<0||right>a.length-1)return;
int i=left;
int j=right;
int temp=a[left];
//下面这段代码要特别注意数组溢出的问题
while(i<j){
//要注意,j>i,不能加等号,加了等号,再加个J--,j就小于i了。然后数组就会有溢出问题
while(a[j]>=temp&&j>i){
j--;
}
//判断代码走到这是因为a[i]>=temp或者还是j>i
if(j>i){
a[i]=a[j];
i++;}
while(a[i]<=temp&&i<j){
i++;
}if(i<j){
a[j]=a[i];
j--;}
}
//记得写下面这句,忘了把temp里面的值填回数组让我郁闷了一阵
a[i]=temp;
sort(a,left,i-1);
sort(a,i+1,right);
}
}