public
static
void
quickSort(
int
a[],
int
start,
int
end)
{
int
i,j;
i = start;
j = end;
if
((a==
null
)||(a.length==
0
))
return
;
while
(i<j){
while
(i<j&&a[i]<=a[j])
//以数组start下标的数据为key,右侧扫描
j--;
if
(i<j){
//右侧扫描,找出第一个比key小的,交换位置
int
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
while
(i<j&&a[i]<a[j])
//左侧扫描(此时a[j]中存储着key值)
i++;
if
(i<j){
//找出第一个比key大的,交换位置
int
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
if
(i-start>
1
){
//递归调用,把key前面的完成排序
quickSort(a,
0
,i-
1
);
}
if
(end-j>
1
){
quickSort(a,j+
1
,end);
//递归调用,把key后面的完成排序
}
}