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

快排是最重要,使用最多的一种排序方法,其思想应用在了很多其他的快速查找等算法里。

主要思想是:
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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值