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

来源:互联网 发布:背身护球 知乎 编辑:程序博客网 时间:2024/05/17 22:14
快排是最重要,使用最多的一种排序方法,其思想应用在了很多其他的快速查找等算法里。

主要思想是:
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)

0 0
原创粉丝点击