您的位置:首页 > 其它

排序算法-快速排序

2012-05-09 20:05 295 查看

快速排序

static Parti p=new Parti();
public static void quick(int[] r,int first,int end){    //利用递归反复划分
if(first<end){
int pivot=p.partition(r, first, end);           //调用划分函数
quick(r,first,pivot-1);
quick(r,pivot+1,end);
}
}
public static void main(String[] args) {
int r[]={12,25,36,63,21,32,56,11};
System.out.println("待排序的记录序列是:");
for(int i=0;i<8;i++){
System.out.print(r[i]+"  ");
}
quick(r,0,7);
System.out.println("\n"+"排序好的记录是:");
for(int i=0;i<8;i++){
System.out.print(r[i]+"  ");
}
}


public int partition(int[] r,int first,int end){
int i,j;
i=first;j=end;                        //初始化
while(i<j){
while(i<j&&r[i]<=r[j])  j--;      //右侧扫描
if(i<j){                          //将较小的记录交换到前面
int temp;
temp=r[i];
r[i]=r[j];
r[j]=temp;
}
while(i<j&&r[i]<r[j]){
i++;                           //左侧扫描
}
if(i<j){                           //将较大的记录换到后面
int temp;
temp=r[i];
r[i]=r[j];
r[j]=temp;
}
}
return i;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: