您的位置:首页 > 产品设计 > UI/UE

Java排序算法(一)--快速排序(QuickSort)

2016-03-21 09:08 489 查看
快排是最重要,使用最多的一种排序方法,其思想应用在了很多其他的快速查找等算法里。


主要思想是:

1.把数组的第一个元素作为基准(pivot),将数组划分;

2.比较要查找的值与pivot的大小,确定在左半边还是右半边进行递归查找

public static void quickSort(int []d,int left,int right){   //left,right均为元素位置
int low =left -1;
int high =right -1;
int pivot =d [low ];  //将第一个元素作为pivot
while(low <high ){
while(low <high &&d[high]>=pivot) high--;
d[ low]= d[ high];
while(low <high &&d[low]<=pivot) low++;
d[ high]= d[low];
}
d[ low]= pivot;
if(left <low ) quickSort (d ,left ,low);
//对left和pivot值及左边)之间的元素递归调用快排
if(high+2< right) quickSort(d,high+2,right);
//对pivot值右边)和right之间的元素递归调用快排
}


快排的平均时间复杂度为O(n*log2n)。快排不是一种稳定的排序方法。

分析方法(最好情况下):n+2*n/2+4*n/4+…+n*n/n=n(lgn+1)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: