您的位置:首页 > 理论基础 > 数据结构算法

数据结构之快速排序

2014-09-02 18:08 232 查看
package com.zhiru;

public class QuickSort {
/*
* 划分函数对快排是很重要的,在递归排序之前
* 进行划分,找出基准元素的位置【基准的初始值一般为第一个元素】。
*/
public static int partition(int[]a,int low,int high) {
int pivotVal=a[low];
int temp;
while(low<high){
while(low<high&&a[high]>=pivotVal) high--;
// a[low]^=a[high];
// a[high]=a[low]^a[high];
// a[low]^=a[high];
temp=a[low];
a[low]=a[high];
a[high]=temp;
while(low<high&&a[low]<=pivotVal) low++;
// a[low]^=a[high];
// a[high]=a[low]^a[high];
// a[low]^=a[high];
temp=a[low];
a[low]=a[high];
a[high]=temp;
}
for(int i=0;i<a.length;i++){
prt(""+a[i]," ");
}
prt("","\n");
return low;
}
public static void qsort(int[]a,int low,int high){
if(low<high){
int p=partition(a,low,high);//将序列按照初始基准值,分为两部分
prt(""+p,"\n");
qsort(a,low,p-1);//对值小于基准值的序列,进行递归快排
qsort(a,p+1,high);//对值大于基准值的序列,递归进行快排
}
}
public static void prt(String s,String r){
System.out.print(s+r);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息